BigEnddian 位元組序

2021-06-26 13:42:58 字數 1516 閱讀 1107

endian翻譯為「位元組序」,又稱端序尾序。在

電腦科學領域中,位元組序是指存放多位元組資料的

位元組(byte)的順序,典型的情況是整數在

記憶體中的存放方式和

網路傳輸的傳輸順序。endianness有時候也可以用指位序(bit)。

一般而言,

位元組序指示了乙個ucs-2

字元的哪個位元組儲存在低位址。如果lsbyte在msbyte的前面,即lsb為低位址,則該

位元組序是小端序;反之則是大端序。在

網路程式設計中,

位元組序是乙個必須被考慮的因素,因為不同的

處理器體系可能採用不同的位元組序。在多平台的**程式設計中,

位元組序可能會導致難以察覺的

bug。

big endian:最低位位址存放高位

位元組,可稱高位優先,

記憶體從最低位址開始按順序存放(高數字數字先寫)。最高位

位元組放最前面。

little endian:最低位位址存放低位

位元組,可稱低位優先,記憶體從最低位址開始按順序存放(低數字數字先寫)。最低位位元組放最前面。

最低位位址存放高位位元組,可稱高位優先,記憶體從最低位址開始按順序存放(高數字數字先寫)。最高位位元組放最前面。

例如「漢」字的unicode編碼是6c49。如果將6c寫在前面,就是big endian。還是將49寫在前面,就是little endian

對於單一的

位元組(a byte),大部分

處理器以相同的順序處理

位元(bit),因此單位元組的存放方法和傳輸方式一般相同。

對於多 位元組資料,如整數(32位機中一般佔4位元組),在不同的

處理器的存放方式主要有兩種,以

記憶體中0x0a0b0c0d的存放方式為例,分別有以下幾種方式:

注: 0x字首代表十六進製制。

資料以8bit為單位:

位址增長方向 →

...

0x0a

0x0b

0x0c

0x0d

...

示例中,

最高有效位(msb, most significant byte)是0x0a 儲存在最低的

記憶體位址處。下乙個

位元組0x0b存在後面的位址處。正類似於十六進製制

位元組從左到右的閱讀順序。

資料以16bit為單位:

位址增長方向 →

...

0x0a0b

0x0c0d

...

最高的16bit單元0x0a0b儲存在低位。

測試大端小端的c**:

#include

int main()

else

return 0;

}

大端位元組序 小端位元組序(網路位元組序 主機位元組序)

大端位元組序 整數的高位位元組儲存在記憶體的低位址處,低位元組儲存在記憶體的高位址處。一般pc大多採用小端位元組序,也稱為主機位元組序。網路上傳輸採用大端位元組序,也稱為網路位元組序。linux中常用轉換函式如下 include uint32 t htonl uint32 t hostlong 無符...

位元組序和網路位元組序

1 位元組序 由於不同的計算機系統採用不同的位元組序儲存資料,同樣乙個4位元組的32位整數,在記憶體中儲存的方式就不同.位元組序分為小尾位元組序 little endian 和大尾位元組序 big endian intel處理器大多數使用小尾位元組序,motorola處理器大多數使用大尾 big e...

位元組序和網路位元組序

1位元組序 由於不同的計算機系統採用不同的位元組序儲存資料,同樣乙個4位元組的32位整數,在記憶體中儲存的方式就不同.位元組序分為小尾位元組序 little endian 和大尾位元組序 big endian intel處理器大多數使用小尾位元組序,motorola處理器大多數使用大尾 big en...