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

2021-05-23 05:46:42 字數 2360 閱讀 3640

1、

本地位元組序

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

小尾就是低位位元組排放在記憶體的低端,高位位元組排放在記憶體的高階。例如乙個4位元組的值為0x1234567的整數與高低位元組對應關係:

01 23

45 67

byte3

byte2

byte1

byte0

高位位元組--

à---------

à--------------

à低位位元組

將在記憶體中按照如下順序排放:

記憶體位址序號

位元組在記憶體中的位址

16 進製值

0x03

byte3

01 0x02

byte2

23 0x01

byte1

45 0x00

byte0

67 如果有char a[2]=,則直接轉換為unsigned short int之後的值為 *((unsigned short int *)aa) == 0x889c

大尾就是高位位元組排放在記憶體的低端,低位位元組排放在記憶體的高階。例如乙個4位元組的值為0x1234567的整數與高低位元組對應關係:

01 23

45 67

byte3

byte2

byte1

byte0

高位位元組--

à---------

à--------------

à低位位元組

將在記憶體中按照如下順序排放:

記憶體位址序號

位元組在記憶體中的位址

16 進製值

0x03

byte0

67 0x02

byte1

45 0x01

byte2

23 0x00

byte3

01 2、

網路位元組序

tcp/ip

各層協議將位元組序定義為大尾,因此tcp/ip協議中使用的位元組序通常稱之為網路位元組序。

3、 字串在記憶體中的儲存(intel系列)

字串和整數是相反的,是安字串的索引從低到高儲存到記憶體中的;

char s[4] =

「abc」;

a b

c /0

s[0]

s[1]

s[2]

s[3]

將在記憶體中按照如下順序排放:

記憶體位址序號

16 進製值

指標p的位置

0xbffeadf7

/0 p+3

0xbffeadf6

c p+2

0xbffeadf5

b p+1

0xbffeadf4

a p

int main(void)

輸出結果:

[netcool@hfinmsp2 demo]$ ./demo001

bffeadf4,       bffeadf5,       bffeadf6,       bffeadf7

bffeadf4,       bffeadf5,       bffeadf6,       bffeadf7

a,      b,      c,

4、整數陣列在記憶體中的儲存(intel系列)

同字串一樣,但是陣列裡的每乙個整數的儲存是按照小尾位元組序;

5、 linux系統中的處理方法

網路位元組序作為乙個標準位元組序,如果系統並沒有提供相關的轉換函式,我們可以通過以下4個巨集實現本地位元組序和網路位元組序的相互轉換:

htons():

將16位無符號整數從本地位元組序轉換成網路位元組序

htonl():

將32位無符號整數從本地位元組序轉換成網路位元組序

ntohs():

將16位無符號整數從網路位元組序轉換成本地位元組序

ntohl():

將32位無符號整數從網路位元組序轉換成本地位元組序

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

主機位元組序 不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址...

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

網路位元組序與主機位元組序 不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的...

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

不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址低位儲存值的低...