大端与小端

互联网使用网络字节顺序采用大端模式进行编址,大端存储也称为网络字节序,因为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)))))

你可能感兴趣的:(大端与小端)