字节序是一个处理器架构特性, 用于指示像整数这样大数字类型在计算机内部的字节顺序.
可以分为大端字节序和小端字节序.
大端字节序 : 高位字节在前, 低位字节在后. 这是人类的习惯.
小端字节序 : 低位字节在前, 高位字节在后. 这是计算机的处理方式.
比如有16进制数 0x0011
大端字节序存储为 : 0x00 0x11 小端字节序存储为 : 0x11 0x00
一般Linux采用小端字节序, 在同一机器进程之间通信一般不用考虑字节序, 但是在网络之间通信就需要进行转换了. TCP/IP协议规定了字节序为大端字节序, 因此对于TCP/IP的应用程序, 可以使用以下几个函数进程转换 :
#include<arpa/inet.h>
uint32_t htonl(uint32_t hostint32);
uint32_t htons(uint16_t hostint16);
uint32_t ntohl(uint32_t hostint32);
uint32_t ntohs(uint16_t hostint16);