讲解:
所谓大小端,从存储的角度看,低字节存在低地址位就是小端;反之低字节存放在地址的高位则为大端;
程序中的一个int数据0x0010,如果CPU为小端则存储为0x0010,0x0010==256;如果为大端的话应该为0x0100;
0x0010 == 00000000 00000000 0000001 00000000
高地址 低地址
0x0100 == 00000000 00000001 0000000 00000000
高地址 低地址
C代码:
#define HOST_BYTEORDER_LITTLE_ENDIAN 0
#define HOST_BYTEORDER_BIG_ENDIAN 1
int GetHostByteOrder(void)
{
union
{
unsigned int bits32;
unsigned char bytes[4];
} value = {0};
value.bytes[0] = 0;
value.bytes[1] = 1;
value.bytes[2] = 0;
value.bytes[3] = 0;
if ( 256 == value.bits32 )
{
return HOST_BYTEORDER_LITTLE_ENDIAN;
}
else
{
return HOST_BYTEORDER_BIG_ENDIAN;
}
}