网络通信常常涉及到字节序转化,接下来理解主机序和网络序有什么异同。
①主机字节顺序HBO(Host Byte Order)
採用小头序(little-endian),从低到高的顺序存储。
採用大头序(big-endian),从高到低的顺序存储。
高位字节排放在内存的低地址端,低位地址排放在高位地址端。
TCP/IP协议定义网络字节为big-endian。
举个样例,0x1234的存储例如以下。
经常使用的转化函数:
①htonl()--------------Host to Network Long
②ntohl()--------------Network to Host Long
①主机字节顺序HBO(Host Byte Order)
採用小头序(little-endian),从低到高的顺序存储。
低位字节排放在内存的低地址端,高位地址排放在高位地址端。
採用大头序(big-endian),从高到低的顺序存储。
高位字节排放在内存的低地址端,低位地址排放在高位地址端。
TCP/IP协议定义网络字节为big-endian。
举个样例,0x1234的存储例如以下。
字节序 |
addr |
addr+1 |
HBO |
0x34 |
0x12 |
NBO |
0x12 |
0x34 |
经常使用的转化函数:
①htonl()--------------Host to Network Long
②ntohl()--------------Network to Host Long
③htons()--------------Host to Network Short
④ntohs()--------------Network to Host Short