0

如何找到微控制器是大端还是小端?

没有微控制器规范,如何知道控制器是大端还是小端?

4

2 回答 2

6

尝试这个,

int x = 1;

if (*(char *)&x == 1)
    printf("Little Endian [LSB first]");  // or LED1 ON
else
    printf("Big Endian [MSB first]");     // or LED2 ON

我在这里做的是——

  • 在“int”中设置最低有效位
  • 取消引用“int”
  • 将其转换为 char 指针,即 char 数组和
  • 然后读取该数组的第一个元素

如果我们能够在第一个索引处看到我们的最低有效位“1”,则表示它首先存储 LSB,这意味着Little Endian 系统

如果我们在第一个索引处看不到我们的最低有效位“1”,则表示它首先存储 MSB,这意味着Big Endian 系统

于 2012-08-19T16:04:31.553 回答
3

你没有规格!?你可以从网上下载...

如果您可以在此控制器上运行调试器,您可以将 0x1234 写入某个 RAM 地址并在内存窗口中查看结果:

IE 将 0x1234 写入 0x2000 会导致:

0x2000 = 0x12 , 0x2001 = 0x34 --> 大端

0x2000 = 0x34 , 0x2001 = 0x12 --> 小端

于 2012-08-16T06:42:56.523 回答