Linux C 網路程式設計 1 大端序和小端序

2021-06-25 21:22:37 字數 1328 閱讀 8936

資料在記憶體中有2種存放方式:

大端序(big-endian):低位位元組放在高位位址

小端序(little-endian):相反

x86系列則採用little endian方式儲存資料

如:0x12345678

資料以8bit位單位,在記憶體中的儲存如下:

big endian

低位址                                            高位址

----------------------------------------->

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     12     |      34    |     56      |     78    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

little endian

低位址                                            高位址

----------------------------------------->

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     78     |      56    |     34      |     12    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

tcp/ip協議規定,網路資料流應採用大端位元組序,即先收到的放在高位,後受到的放在低位

標頭檔案:arpa/inet.h

[cpp]view plain

copy

#include 

uint32_t htonl(uint32_t hostlong);  

uint16_t htons(uint16_t hostshort);  

uint32_t ntohl(uint32_t netlong);  

uint16_t ntohs(uint16_t netshort);  

h表示host,

n表示network,

l表示32位長整數,

s表示16位短整數

eg:[cpp]view plain

copy

#include 

void

main()    

[1] 位元組序

[2] 位元組序(endian),大端(big-endian),小端(little-endian)

大端序和小端序

一 概述 位元組序,又稱端序,尾序,英文 endianness。在電腦科學領域中,位元組序是指存放多位元組資料的位元組 byte 的順序,典型的情況是整數在記憶體中的存放方式和網路傳輸的傳輸順序。endianness有時候也可以用指位序 bit 大小端序跟硬體的體系結構有關,所有x86系列的pc機都...

大端序和小端序

在socket程式設計的時候會遇到端序的問題。位元組序和程式語言無關,和硬體的儲存方式有關。intel的cpu使用小端序,而網路上傳輸資料使用大端序。在我的理解中,大端序和小端序並沒有哪種更好,只是儲存的方式不同而已。記憶體中我們只關心1byte,位址的基本單位也是byte。位元組序不關心1個byt...

大端序和小端序

一 概述 位元組序,又稱端序,尾序,英文 endianness。在電腦科學領域中,位元組序是指存放多位元組資料的位元組 byte 的順序,典型的情況是整數在記憶體中的存放方式和網路傳輸的傳輸順序。endianness有時候也可以用指位序 bit 大小端序跟硬體的體系結構有關,所有x86系列的pc機都...