linux 是大端还是小端,详解大端模式和小端模式

七、如何进行转换

对于字数据(16位):

#define BigtoLittle16(A)  (( ((uint16)(A) & 0xff00) >> 8)    | \

(( (uint16)(A) & 0x00ff) << 8))

对于双字数据(32位):

#define BigtoLittle32(A)  ((( (uint32)(A) & 0xff000000) >> 24) | \

(( (uint32)(A) & 0x00ff0000) >> 8)  | \

(( (uint32)(A) & 0x0000ff00) << 8)  | \

(( (uint32)(A) & 0x000000ff) << 24))

八、从软件的角度理解端模式

从软件的角度上,不同端模式的处理器进行数据传递时必须要考虑端模式的不同。如进行网络数据传递时,必须要考虑端模式的转换。在Socket接口编程中,以下几个函数用于大小端字节序的转换。

#define ntohs(n)    //16位数据类型网络字节顺序到主机字节顺序的转换

#define htons(n)    //16位数据类型主机字节顺序到网络字节顺序的转换

#define ntohl(n)      //32位数据类型网络字节顺序到主机字节顺序的转换

#define htonl(n)      //32位数据类型主机字节顺序到网络字节顺序的转换

其中互联网使用的网络字节顺序采用大端模式进行编址,而主机字节顺序根据处理器的不同而不同,如PowerPC处理器使用大端模式,而Pentuim处理器使用小端模式。

大端模式处理器的字节序到网络字节

你可能感兴趣的:(linux,是大端还是小端)