位元組序的理解

2021-09-02 14:59:57 字數 767 閱讀 6063

編者:李國帥

由於不同的cpu或者作業系統的主機序不一樣,導致在讀寫檔案或者檔案傳送的時候,使用的規則不一樣。

多位元組資料型別在不同的cpu上可能讀寫方式不同。

同時不同編譯器對bitfield的處理方式也可能不一樣。

所以資料結構中的int型和short型變數需要在網路的兩頭先變成相同的格式傳送,接收的時候再從相同的格式轉變為本機格式進行處理。

而且,資料中不要使用bitfield。

訊息頭     起始碼     識別符號     內容格式         訊息長度

8bytes      2 byte       1bytes      1byte                 4 bytes

識別符號     1個位元組,從高至低位(7?0)標識如下:

bit 7 – bit 3:保留

bit 2位:是否加密:1-訊息加密,0-訊息未加密

bit 1位:是否壓縮:1-訊息壓縮,0-訊息未壓縮

bit 0位:訊息是否做和校驗:1-訊息有和校驗,0-訊息未做和校驗

識別符號欄位在windows和mac環境中編譯之後的順序是不同的,雖然都可能是x86機器。暫時不做修改。

按照約定,不管對於任何的cpu和作業系統,都知道網路上使用什麼格式(網路上使用big-endian格式)。

這樣,網路自身使用什麼格式對主機來說是透明的,不需要管理。這裡僅僅把網路順序作為cpu中自序識別的乙個參考。

對於多位元組字段,傳送的時候使用htons或者htonl。接收的時候使用ntohs或者ntohl。

理解網路位元組序與主機位元組序

主機位元組序就是我們平常說的大端和小端模式 不同的cpu有不同的位元組序型別,這些位元組序是指整數在記憶體中儲存的順序,這個叫做主機序。引用標準的big endian和little endian的定義如下 a little endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高...

理解位元組序 大端位元組序和小端位元組序

計算機硬體有兩種儲存資料的方式 大端位元組序 big endian 和小端位元組序 little endian 舉例來說,數值0x2211使用兩個位元組儲存 高位位元組是0x22,低位位元組是0x11。大端位元組序 高位位元組在前,低位位元組在後,這是人類讀寫數值的方法。小端位元組序 低位位元組在前...

理解位元組序

日期 2016年11月22日 1.計算機硬體有兩種儲存資料的方式 大端位元組序 big endian 和小端位元組序 little endian 舉例來說,數值0x2211使用兩個位元組儲存 高位位元組是0x22,低位位元組是0x11。同理,0x1234567的大端位元組序和小端位元組序的寫法如下圖...