CPU向内存保存数据的方式有2种,这意味着CPU解析数据的方式也分为2种
大端序:高位字节存放到低位地址
小端序:高位字节存放到高位地址
假设在0x20号开始的地址中保存4字节int类型数0x12345678,大端序CPU保存方式如下:
0x20号 0x21号 0x22号 0x23号
0x12 0x32 0x56 0x78
整数0x12345678, 0x12是最高位字节,0x78是最低位字节。因此大端中先保存最高位字节0x12,
小端序保存方式如下:
0x20号 0x21号 0x22号 0x23号
0x78 0x56 0x34 0x12
先保存的是最低位字节0x78,每种CPU的保存方式均不同,目前主流的Intel系列CPU以小端序方式保存数据
网络字节序统一为大端序
s指的是short,l指的是long(linux中long占4个字节),htons解释为把short型数据从主机字节序转化为网络字节序,
ntohs解释为把short型数据从网络字节序转化为主机字节序
in_addr_t inet_addr(const char *string);
将字符串形式的ip地址转化为32位整型数据,该函数在转换过程中同时进行网络字节序转换,成功时返回32位整型数,失败时会返回INADDR_NONE
int inet_aton(const char *string, struct in_addr *addr);
此函数会自动把ip地址填入该结构体变量
atoi把字符串类型转换为整数型