c 语言代码判断机器是大端还是小端:
#include <stdio.h>
// 使用类型转换判断大小端
char* endian_by_cast()
{
int v = 0x0100;
if ((char)v == 1)
{
return "Big Endian";
}
else {
return "Little Endian";
}
}
// 使用联合体判断大小端
char* endian_by_union()
{
union u {
int a;
char b;
} u1;
u1.a = 0x0;
u1.a = 0x0001;
if (u1.b == 1) {
return "Little Endian";
}
else {
return "Big Endian";
}
}
int main()
{
printf("endian_by_cast(): %s.\n", endian());
printf("endian_by_union(): %s.\n", endian_by_union());
return 0;
}
可以通过 gdb 的 x 命令查看内存内容: