简单介绍:字节序是由CPU和OS对多字节变量的内存存储顺序不同而产生的
小端字节序:在表示变量的内存地址的起始地址存放低字节,高字节顺序存放
大端字节序:在表示变量的内存地址的起始地址存放高字节,低字节顺序存放,
例如:
变量的值0xabcd
uint32_t htonl: 主机字节序到网络字节序的长整形转换
uint16_t htons:主机字节序到网络字节序的短整形转换
uint32_t ntohl: 网络字节序到主机字节序的长整形转换
uint16_t ntohs:网络字节序到主机字节序的短整形转换
字节序的例子:
#include<stdio.h>
typedef union{
unsigned short int value;
unsigned char byte[2];
}to;
int main()
{
to type;
type.value=0xabcd;
if(type.byte[0] == 0xab && type.byte[1] == 0xcd)
{
printf("BIG Endian\n");
printf("type.byte[0]=%x,type.byte[1]=%x\n",type.byte[0],type.byte[1]);
}
else
{
printf("Little Endian\n");
printf("type.byte[0]=0x%x,type.byte[1]=0x%x\n",type.byte[0],type.byte[1]);
}
return 0;
}
测试输出结果:
Little Endian
type.byte[0]=0xcd,type.byte[1]=0xab