主机字节序既包括小端字节序,又包括大端字节序。它与具体的CPU类型、操作系统类型等有关,就像前面的表格列出的。
网络字节序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而保证数据在不同主机之间传输时能够被正确解释。
网络字节序采用大端字节序。
为了进行转换,BSD socket提供了转换的函数,有四个:
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong); //将一个无符号长整型数从主机字节序转换成网络字节序
uint16_t htons(uint16_t hostshort); //将一个无符号短整型数从主机字节序转换成网络字节序
uint32_t ntohl(uint32_t netlong); //将一个无符号长整型数从网络字节序转换成主机字节序
uint16_t ntohs(uint16_t netshort); //将一个无符号短整型数从网络字节序转换成主机字节序