多位元組的數值在記憶體中高低位的排列方式會影響所表示的數值。根據位元組高低位排序方式的不同,可以分為:大端位元組序(big endian)和 小端位元組序(little endian)。
大端位元組序是指乙個整數的高位位元組儲存在記憶體的低位址處,可以理解為數值的高位部分靠前儲存。以0x12343abcd為例,假如儲存在記憶體中的起始位址為0x00000000,則0x1234abcd在記憶體中的儲存為:
位址0x00000000處儲存內容為:0x12
位址0x00000001處儲存內容為:0x34
位址0x00000002處儲存內容為:0xab
位址0x00000003處儲存內容為:0xcd
小端位元組序是指乙個整數的低位位元組儲存在記憶體的低位址處,可以理解為數值的低位部分靠前儲存。以0x12343abcd為例,假如儲存在記憶體中的起始位址為0x00000000,則0x1234abcd在記憶體中的儲存為:
位址0x00000000處儲存內容為:0xcd
位址0x00000001處儲存內容為:0xab
位址0x00000002處儲存內容為:0x34
位址0x00000003處儲存內容為:0x12
#include
uint32_t
htonl
(uint32_t hostlong)
;uint32_t
htons
(uint32_t hostshort)
;uint32_t
ntohl
(uint32_t hostlong)
;uint32_t
ntohl
(uint32_t hostshort)
;
不同主機位元組序的兩台主機進行通訊時有可能造成資料二義。
因此規定:在網路通訊中統一使用大端位元組序作為網路位元組序進行通訊。
主機位元組序會對儲存時大於1個位元組的資料型別造成影響。
主機位元組序與網路位元組序
主機位元組序 不同的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 最符合人的思維的...