大小端模式介绍
- 大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。
- 小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端)
用联合体实现大小端判断
联合体是一个在同一个存储空间里存储不同类型数据的数据类型。这些存储区的地址都是一样的,联合里不同存储区的内存是重叠的,修改了任何一个其他的会受影响。
#include <stdio.h>
int main()
{
union MyUnion
{
short int i;
char a[2];
}u;
u.a[0] = 0x11;
u.a[1] = 0x22;
printf("a[0]地址为:0x%x\n", &u.a[0]);
printf("a[1]地址为:0x%x\n", &u.a[1]);
if (u.i == 0x2211)
printf("小端模式");
else
printf("大端模式");
printf("0x%x\n", u.i);
return 0;
}
大小端转换,先与再移位。
(( a&0x000000ff)<< 24 ) | ( ( a&0x0000ff00 ) << 8 ) | ( ( a&0x00ff0000 ) >> 8 ) | ( ( a&0xff000000 ) >> 24 )