首页 > 代码库 > 怎么确认一台电脑是big-endian 还是little-endian?

怎么确认一台电脑是big-endian 还是little-endian?

假设我们使用的是一台32位机器。

如果是little endian, 那么x在内存中是之样排列的

 

      高内存
       ---->
  +----+----+----+----+
  |0x01|0x00|0x00|0x00|
  +----+----+----+----+
  A
  |
  &x
所以 (char*)(*x) == 1


 

如果是big endian,它将会是这个样子

      高内存
       ---->
  +----+----+----+----+
  |0x00|0x00|0x00|0x01|
  +----+----+----+----+
  A
  |
  &x
所以 (char*)(*x) == 0


 

#include <stdio.h>
#include <stdint.h>

int is_big_endian(void)
{
	union {
		uint32_t i;
		char c[4];
	} e = {0x10000000};
	
	return e.c[0];
}

int main(void)
{
	printf("System is %s -endian.\n", is_big_endian() ? "big" : "little");
	
	return 0;
}


 

 

怎么确认一台电脑是big-endian 还是little-endian?