什么是大小端?
有些编译器从低位字节开始存放,称为“小端”,有的从高位字节开始存放,称为“大端”。
大端:高字节放在低地址,和我们从左往右阅读的顺序一致。
小端:低字节放在低地址。
int main()
{
int a = 1;
//[01 00 00 00]小端存储
//[00 00 00 01]大端存储
return 0;
}
如何判断大小端?
1.通过字节大小判断
因为int为4个字节,因此我们只需要取出int的第一个字节,判断他的低地址存放的是否为1,就可以判断该编译器是大端还是小端了。
如下:
int check_sys()
{
int a = 1;
//返回1,小端
//返回0, 大端
return *(char*)&a;
}
int main()
{
int ret = check_sys();
if (ret == 1)
{
cout << "小端" << endl;
}
else
{
cout << "大端" << endl;
}
system("pause");
return 0;
}
结果:
2.运用结构体
int check_sys()
{
union
{
char c;
int i;
}u;//定义一个u的变量
u.i = 1;
return u.c;
}
结果: