互联网使用网络字节顺序采用大端模式进行编址,大端存储也称为网络字节序,因为TCP/IP包在网络中传输时都要求以这种次序,以其他形式存储数据的机器(主机字节顺序根据处理器的不同而不同,如PowerPC处理器,使用大端模式,而Pentuim处理器使用小端模式),则必须在传送数据之前把首部转换成网络字节序。
网络字节顺序到主机字节顺序的转换(需要大小字节转换时):
#define ntoh16(x) ((((x)&0x00ff)<<8)|((x)&0xff00)>>8))
#define NTOH16(x) ((x)=((UINT16)(ntoh16(x))))
#define ntoh32(x) ((((x)&0x000000ff)<<24)|/
(((x)&0x0000ff00)<<8)|/
(((x)&0x00ff0000)>>8)|/
(((x)&0xff000000)>>24)))
#define NTOH32(x) ((x)=((UINT32)(ntoh32(x))))
#define NTOH64(x) ((x)=((UINT64)(((ntoh32((x)&0xffffffff))<<32)|/
(ntoh32(((x)>>32)&0xffffffff)))))