通过代码判断大端和小端
- 大端:数据的高字节存放在低地址;数据的低字节存放在高地址
- 小端:数据的高字节存放在高地址;数据的低字节存放在低地址
例如在32位机器上存放0x123456789,其大小端模式存储如下:
如何通过代码检测机器是大端还是小端?
方法一:
# include<iostream>
using namespace std;
union text
{
int a;
char b;
};
int main()
{
text t;
t.a = 0x00000001;
if (t.b == 0x01)
{
cout << "big" << endl;
}
else
{
cout << "small" << endl;
}
/*
*代码解析:
*如果是大端,那么t.a的存储方式应该是:0x00000001
*如果是小端,那么t.a的存储方式应该是:0x01000000
*/
}
方法二:
# include<iostream>
using namespace std;
int main()
{
short a = 0x0001;
char b = (char)a;
if (b == 0x01)
{
cout << "big" << endl;
}
else
{
cout << "small" << endl;
}
return 0;
}