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