為了弄明白這個位元組序的區分,我們首先需要知道為什麼會有這兩種位元組序。
根本原因在於多位元組資料的儲存方式,即大小端問題。假設有乙個四位元組的 int 物件 :int a =
(01020304)16
(
01020304)16
,a 的最低位元組為
0416
0416
,最高位元組為
0116
0116
其儲存的起始位址為 0x100;
有些機器採用大端(big-endian)方式:
另一些則採用小端(little-endian)方式:
為了統一,tcp/ip 各層協議將位元組序定義為 big-endian,因此tcp/ip協議中使用的位元組序通常稱之為網路位元組序。
由此可知網路位元組序與 cpu型別、作業系統型別無關,但主機序則由 cpu 型別和其上執行的作業系統決定:
cpu作業系統
位元組序alpha
全部little endian
hp-pa
ntlittle endian
hp-pa
unix
big endian
intelx86
全部little endian
在使用little endian的系統中 這些函式會把位元組序進行轉換,在使用big endian型別的系統中 這些函式會定義成空巨集。
主機位元組序與網路位元組序
主機位元組序 不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址...
網路位元組序與主機位元組序
1 本地位元組序 由 於不同的計算機系統採用不同的位元組序儲存資料,同樣乙個4位元組的32位整數,在記憶體中儲存的方式就不同.位元組序分為小尾位元組序 little endian 和大尾位元組序 big endian intel處理器大多數使用小尾位元組序,motorola處理器大多數使用大尾 bi...
網路位元組序與主機位元組序
網路位元組序與主機位元組序 不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的...