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を最初に格納していることを意味します。これはリトルエンディアンシステムを意味します。

最初のインデックスで最下位ビット「1」を確認できない場合は、MSBを最初に格納していることを意味します。これは、ビッグエンディアンシステムを意味します。

于 2012-08-19T16:04:31.553 に答える
3

スペックがない!?インターネットからダウンロードできます...

このコントローラーでデバッガーを実行できる場合は、RAM アドレスに 0x1234 を書き込み、メモリ ウィンドウで結果を確認できます。

IE で 0x1234 を 0x2000 に書き込むと、次のようになります。

0x2000 = 0x12 , 0x2001 = 0x34 --> ビッグエンディアン

0x2000 = 0x34 、 0x2001 = 0x12 --> リトルエンディアン

于 2012-08-16T06:42:56.523 に答える