1. 什么是大小端字节序
1.1 什么是字节序
字节序, 即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前.
简单的来说是数据的各个字节是从高地址位存储还是低地址位存储. 这个顺序是由电脑的系统决定的.
1.2 什么是小端字节序
小端字节序 : 数据的低位存储在低地址空间, 数据的高位存储在高地址空间. 小端字节序称为LSB
1.3 什么是大端字节序
大端字节序 : 数据的低位存储在高地址空间, 数据的高位存储在低地址空间. 大端字节序称为MSB
通过联合判断大小端字节序
注意: 要清楚有关联合的知识, 联合的大小是该联合内最大的变量大小, 联合中所有变量指向的地址都是联合的起始地址. 所有可用通过联合来进行大小端字节序的判断.
通过联合判断小端字节序如下图所示:
int is_lsb(void)
{
union test
{
unsigned char a;
unsigned int b;
}data;
data.b=0x12345678;
if(data.a==0x78)
return 1; //LSB 小段
else
return 0; //MSB 大端
}
通过指针判断大小端字节序
通过指针判断小端字节序如下图所示:
int is_lsb(void)
{
unsigned int data=0x12345678;
unsigned char *ptr=NULL;
ptr = (unsigned char *)&data;
if (*ptr==0x78)
return 1;
else
return 0;
}