大端模式:字数据的高字节存储在低地址中而字数据的的低字节存储在高地址中;
小端模式:字数据的低字节存放在低字节中,而字数据的高字节存放在高地址中。
例如:int i =0x00 00 00 01,那么i在大小端下的存放模式分别是这样:
如何判断一个系统是大端存放还是小端存放呢?我们可以在一个4字节的数据上面截取低地址上的1个字节,
如果低地址上截取的字节与原数据的低字节数据一致,说明该系统为小端存放;
如果低地址上截取出来的字节与原数据的高位数据一致,说明系统为大端存放;
下来编程实现:
int check_sys1()//大小端判断
{
int i = 0x1;
return *(char*)&i;//char*类型指向低地址,然后返回低地址一个字节的数据
}
int check_sys2()//大小端判断函数
{
union
{
int i;
char c;
}un;
un.i = 1;
return un.c;
}
int main()
{
int ret = check_sys1();
if (ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}