天天看點

網絡傳輸大端序_小端法、大端法、網絡位元組轉序

1.小端法(Little-Endian)就是低位位元組排放在記憶體的低位址端即該值的起始位址,高位位元組排放在記憶體的高位址端。

2.大端法(Big-Endian)就是高位位元組排放在記憶體的低位址端即該值的起始位址,低位位元組排放在記憶體的高位址端。

舉個簡單的例子,對于×××0x12345678。它在大端法和小端法的系統内中,分别如圖1所示的方式存放。

網絡傳輸大端序_小端法、大端法、網絡位元組轉序

網絡位元組序

我們知道網絡上的資料流是位元組流,對于一個多位元組數值,在進行網絡傳輸的時候,先傳遞哪個位元組?也就是說,當接收端收到第一個位元組的時候,它是将這個位元組作為高位還是低位來處理呢?

網絡位元組序定義:收到的第一個位元組被當作高位看待,這就要求發送端發送的第一個位元組應當是高位。而在發送端發送資料時,發送的第一個位元組是該數字在記憶體中起始位址對應的位元組。可見多位元組數值在發送前,在記憶體中數值應該以大端法存放。

網絡位元組序說是大端位元組序。

比如我們經過網絡發送0x12345678這個×××,在80X86平台中,它是以小端法存放的,在發送前需要使用系統提供的htonl将其轉換成大端法存放,如圖2所示。

網絡傳輸大端序_小端法、大端法、網絡位元組轉序