int CheckCpuEndian(void)
{
union
{
int a;
char b;
}c;
c.a=1;
return (1 == c.b);
}
返回1为LittleEndian。
联合体union的存放顺序是所有成员都从 低地址 开始存放,
若是小端模式,由低地址到高地址存放为0x01 00 00 00,c.b被赋值为0x01
CPU有两种字节序:Little endian 和Big endian
LittleEndian:低位字节数据存放于低地址;高位字节数据存放于高地址
BigEndian:低位字节数据存放于高地址;高位字节数据存放于低地址
对于数据0x12345678,在内存中存放的顺序如下:
LittleEndian:
地址:0x6000 0x6001 0x6002 0x6003
数据: 0x78 0x56 0x34 0x12
BigEndian:
地址:0x6000 0x6001 0x6002 0x6003
数据: 0x12 0x34 0x56 0x78
本文介绍了一种通过C语言实现的检测CPU字节序的方法。提供了详细的代码示例,并解释了LittleEndian与BigEndian的区别及如何通过联合体union判断当前CPU的字节序。
1157

被折叠的 条评论
为什么被折叠?



