大端模式:数据的高字节,保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端模式:数据的高字节,保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
检查当前系统的存储模式为大小端的一种方式是使用union类型数据。
由于union中所有的数据成员共用一个空间,所有的数据成员都是共用一个起始地址。
空间的大小为数据成员中长度最长的数据成员。
具体实现如下:
union
{
int i;
char c;
}u;
int EndianCheck(void)
{
u.c = 0x01;
if(u.i == 1)
{
return 1;
}
else
{
return 0;
}
}
int main(int argc,char** argv)
{
if(EndianCheck)
{
printf("little Endian\n");
return 0;
}
printf("Big Endian\n");
return 0;
}
union中的成员i占四个字节,而c只有占一个字节。当c被赋值为1的时候,有其他三个字节值都为0。
如果取出低地址上的值为1,说明这个是小端模式。
如果取出高地址上的值为1,说明这个是大端模式。
这个位置判断i的值来确定。