如何判断大小端
时间: 2023-07-18 08:03:03 浏览: 143
在计算机中,数据存储的方式可以分为大端字节序和小端字节序两种。大端字节序是指将高位字节存储在内存的低地址处,而小端字节序则是将低位字节存储在内存的低地址处。
判断一个系统的字节序可以通过以下方法:
1. 使用联合体(union)的方式进行判断。定义一个包含多个字节类型成员的联合体,将该联合体的一个成员赋值为一个已知的整数值,然后查看另一个成员的值,如果其值与所给整数值的字节序相同,则该系统使用该字节序。
例如:
```c
#include <stdio.h>
int main() {
union {
short s;
char c[sizeof(short)];
} un;
un.s = 0x0102;
if (sizeof(short) == 2) {
if (un.c[0] == 1 && un.c[1] == 2)
printf("big-endian\n");
else if (un.c[0] == 2 && un.c[1] == 1)
printf("little-endian\n");
else
printf("unknown\n");
} else {
printf("sizeof(short) = %ld\n", sizeof(short));
}
return 0;
}
```
2. 使用指针的方式进行判断。定义一个指向整数类型变量的指针,将该指针指向一个已知的整数变量,然后查看该指针所指向的地址的值,如果其值与所给整数值的字节序相同,则该系统使用该字节序。
例如:
```c
#include <stdio.h>
int main() {
short s = 0x0102;
char *p = (char *)&s;
if (*p == 1 && *(p + 1) == 2)
printf("big-endian\n");
else if (*p == 2 && *(p + 1) == 1)
printf("little-endian\n");
else
printf("unknown\n");
return 0;
}
```
阅读全文
相关推荐











