字节序
1 定义
字节序:多字节数据在内存中的存放顺序。
2 分类
包括大端序和小端序。
- 大端序(Big-Endian)将数据的低位字节存放在内存的高位地址,高位字节存放在低位地址。如网络字节序
这种排列方式与数据用字节表示时的书写顺序一致,符合人类的阅读习惯。 - 小端序(Little-Endian),将一个多位数的低位放在较小的地址处,高位放在较大的地址处。如主机字节序
例如:在内存中存放整型数值168496141 需要4个字节,这个数值的对应的16进制表示是0X0A0B0C0D,这个数值在用大端序和小端序排列时的在内存中的示意图如下:
3 转换
- 从主机字节序到网络字节序的转换函数:htons、htonl;
- 从网络字节序到主机字节序的转换函数:ntohs、ntohl。
h - host 主机,主机字节序
to - 转换成什么
n - network 网络字节序
s - short unsigned short
l - long unsigned int
4 参考
https://zhuanlan.zhihu.com/p/352145413
https://www.nowcoder.com/discuss/934904