如何测试一个机器是大端还是小端
要判断一台机器是大端(Big-Endian)还是小端(Little-Endian),可以通过编程来测试。这两种模式指的是多字节数据在内存中的存储顺序:
- 大端模式:高位字节存放在低地址,低位字节存放在高地址(类似人类读写数字的习惯)。
- 小端模式:低位字节存放在低地址,高位字节存放在高地址(更符合计算机内部处理逻辑)。
测试原理
以一个 2 字节的整数(如 0x1234
)为例:
- 大端存储:低地址存
0x12
(高位),高地址存0x34
(低位)。 - 小端存储:低地址存
0x34
(低位),高地址存0x12
(高位)。
通过将整数的地址强制转换为单字节指针,读取第一个字节的值,即可判断端模式。
可以通过以下代码进行测试:
#include <stdio.h>int main() {// 定义一个2字节的整数0x1234short int num = 0x1234;// 将整数的地址转换为单字节指针unsigned char *ptr = (unsigned char *)#// 读取第一个字节(低地址)的值if (*ptr == 0x34) {// 低地址存低位字节(0x34),是小端模式printf("小端模式(Little-Endian)\n");} else if (*ptr == 0x12) {// 低地址存高位字节(0x12),是大端模式printf("大端模式(Big-Endian)\n");}return 0;
}