小端:低地址存放低字节数据。
大端:低地址存放高字节数据。
考点:
如何通过代码判断当前系统是大端还是小端?
代码/具体阐述:
实现的算法:定义一个大于一个字节的变量查找该变量的低地址存放的是低字
节数据还是高字节数据。
可以用两种方式去验证当前系统是大端还是小端模式。
1.BOOL IsBigEndian()
{
int a = 0x1234;
char b = *(char *)&a; //通过将int强制类型转换成char单字节,通过判断起始存储位置。即等于 取b等于a的低地址部分
if( b == 0x12)
{
return TRUE;
}
return FALSE;
}
2.BOOL IsBigEndian()
{
union NUM
{
int a;
char b;
}num;
num.a = 0x1234;
if( num.b == 0x12 )
{
return TRUE;
}
return FALSE;
}
大端小端没有谁优谁劣,各自优势便是对方劣势:
小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。