大端和小端(網路位元組序和主機位元組序):
大端(big endian):即網路位元組序。
小端(littile endian):即主機位元組序。
記憶方式:網路的範圍很大,所以大端是網路位元組序。
大端方式將高位存放在低位址,小端方式將低位存放在高位址。
採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。
如果將乙個32位的整數0x12345678存放到乙個整型變數(int)中,這個整型變數採用大端或者小端模式在記憶體中的儲存由下表所示。
為簡單起見,本書使用op0表示乙個32位資料的最高位元組msb(most significant byte),使用op3表示乙個32位資料最低位元組lsb(least significant byte)。
---------------------------
位址偏移 大端模式 小端模式
0x00 12(op0) 78(op3)
0x01 34(op1) 56(op2)
0x02 56(op2) 34(op1)
0x03 78(op3) 12(op0)
---------------------------
如果將乙個16位的整數0x1234存放到乙個短整型變數(short)中。這個短整型變數在記憶體中的儲存在大小端模式由下表所示。
---------------------------------
位址偏移 大端模式 小端模式
0x00 12(op0) 34(op1)
0x01 34(op1) 12(op0)
-------------------------------------
不同的cpu上執行不同的作業系統,位元組序也是不同的,參見下表。
處理器 作業系統 位元組排序
alpha 全部 little endian
hp-pa nt little endian
hp-pa unix big endian
intelx86 全部 little endian <-----x86系統是小端位元組序系統
motorola680x() 全部 big endian
mips nt little endian
mips unix big endian
powerpc nt little endian
powerpc 非nt big endian <-----ppc系統是大端位元組序系統
rs/6000 unix big endian
sparc unix big endian
ixp1200 arm核心 全部 little endian
大端和小端(網路位元組序和主機位元組序)
大端和小端 網路位元組序和主機位元組序 大端 big endian 即網路位元組序。小端 littile endian 即主機位元組序。記憶方式 網路的範圍很大,所以大端是網路位元組序。大端方式將高位存放在低位址,小端方式將低位存放在高位址。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式...
大端位元組序 小端位元組序(網路位元組序 主機位元組序)
大端位元組序 整數的高位位元組儲存在記憶體的低位址處,低位元組儲存在記憶體的高位址處。一般pc大多採用小端位元組序,也稱為主機位元組序。網路上傳輸採用大端位元組序,也稱為網路位元組序。linux中常用轉換函式如下 include uint32 t htonl uint32 t hostlong 無符...
大端位元組序和小端位元組序
簡單介紹 位元組序是由cpu和os對多位元組變數的記憶體儲存順序不同而產生的 小端位元組序 在表示變數的記憶體位址的起始位址存放低位元組,高位元組順序存放 大端位元組序 在表示變數的記憶體位址的起始位址存放高位元組,低位元組順序存放,例如 變數的值0xabcd uint32 t htonl 主機位元...