以下内容参考自《C语言尝试剖析》
大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。
假设int类型占4个字节,int类型的变量i被初始化为1。
以大端模式存储,其内存布局如下图:
以小端模式存储,其内存布局如下图:
union {
int i;
char a[4];
} u;
int is_big_endian()
{
u.a[0] = 1;
printf("debug. %d\n", u.i);
if (u.i != 1) {
return 1;
} else {
return 0;
}
}
int main(int argc, char *argv[])
{
if (is_big_endian()) {
printf("大端\n");
} else {
printf("小端\n");
}
return 0;
}