快速判断大端小端字节序
什么是大小端?
大小端(Endianness)是指计算机存储多字节数据时,字节的顺序。主要有两种类型:
1. 大端字节序(Big-endian)
2. 小端字节序(Little-endian)
- 定义:最低有效字节存储在最低的内存地址,最高有效字节存储在最高的内存地址。
- 示例:对于整数
0x12345678,内存布局为:
内存地址 | 值
-----------------
0x00 | 0x78
0x01 | 0x56
0x02 | 0x34
0x03 | 0x12
代码实现判断
1、整数定义:将 x 定义为 0x12345678
3、字节判断:通过检查 c[0]:
- 如果 c[0] 为 0x78,说明是小端字节序。
- 如果 c[0] 不为 0x78,说明是大端字节序。
#include <iostream>
using namespace std;
int main()
{
unsigned int x = 0x12345678;
char *c = (char *)(&x);
if (c[0] == 0x78)
{
cout << "Little-endian" << endl;
}
else
{
cout << "Big-endian" << endl;
}
return 0;
}