一个联合体union的长度等于其内部长度最大的成员的长度。
union的所有成员共享同一块内存空间,可以利用这个特性读取数据的字节存储方式。
c
#include <stdio.h>
int check_endian() {
union {
short s; // 2 字节(short)
char c[2]; // 2 字节(char)
} u;
u.s = 0x0102; // 小端:0x02 0x01;大端:0x01 0x02
return u.c[0] == 0x02; // 小端返回 1,大端返回 0
}
int main() {
if (check_endian()) {
printf("Little-Endian\n");
} else {
printf("Big-Endian\n");
}
return 0;
}
1,小端模式:内存的低地址存数据的低位,内存的高地址存数据的高位。低低高高。
2,大端模式:内存的低位存数据的高位,内存的高地址存数据的低位。 低高高低。