对于一个整型变量a(4字节,值为1),如果用char指针的方式访问第一个字节所得的位的值是1(二进制的最低有效字节),那么就是小端方式。如果得到的是0,那么就是大端方式。
下面是识别大端小端方式:
#include "stdio.h"
void print_endian();
int is_little_endian();
int main() {
print_endian();
return 0;
}
void print_endian() {
if (is_little_endian()) {
printf("Little endian\n");
} else {
printf("Big endian\n");
}
}
int is_little_endian() {
int a = 0x1;
char *a_p = (char *) &a;
return a_p[0]; // 处理的第一个字节是最低有效位的1,就是小端。
}
另外,大端和小端和内存地址顺序无关,一般和底层硬件也没关系,大部分和操作系统有关系。
总之,如果在一个整型变量(4字节),按字节顺序访问的第一个字节,这个字节是最低有效位,那么就是小端,否则就是大端。