字节序

include: co/byte_order.h.

计算机中的数据在内存中是以字节(8 bit)为基本单位进行存储的,大端机采用大端字节序,即高位字节在低地址,低位字节在高地址,小端机则采用小端字节序,即低位字节在低地址,高位字节在高地址。

单个字节在大、小端机器上是完全相同的,而多个字节的基本数据类型,在大、小端机器上有着不同的字节序。这里说的基本数据类型是指像 int, double 这样的内置类型,字符串不在此列,它是由单字节构成的序列,在大、小端机器上有着相同的存储形式。

网络上传输的数据采用大端字节序,所谓的网络字节序也就是大端字节序。发送数据到网络上时,需要将其中的多字节基本类型转换成网络字节序,而从网络上接收数据时,则需要转换成所在主机的字节序。

byte_order.h 定义了如下的方法:

ntoh16  ntoh32  ntoh64
hton16  hton32  hton64

这些方法分别适用于长度为 2, 4, 8 字节的整数,其中 ntoh 系列将网络字节序转换成主机字节序,hton 系列则将主机字节序转换成网络字节序。

  • 代码示例
uint32 h = 777;
uint32 n = hton32(h);