« 2012年、10年 | トップページ | 今後の改造計画を思案 »

リトルエンディアンとビッグエンディアン

そもそも、CPU内のメモリでの数値の扱い方なわけですが
最近のLL言語では意識すること殆ど無いですよね。

http://www.ertl.jp/~takayuki/readings/info/no05.html

ここに上手くまとめてあります。
CPUアーキテクチャの違いで(x86 or 68k PowerPC or SPARC)起こることは知ってたけど
ネットワークバイトオーダーはビッグエンディアンで決め打ちなのね。

1: #include
2: #include
3:
4: int main()
5: {
6: char fifo[] = {0x12, 0x34, 0xAB, 0xCD};
7: __u32 val;
8:
9: val = *(__u32 *)fifo;
10:
11: printf("0x%Xエn", val);
12: return 0;
13: }

リトルエンディアンなら
  0xCDAB3412
ビッグエンディアンなら
  0x1234ABCD

よく考えたら、LinuxっていろんなCPUサポートしてるから、CPUアーキテクチャ毎に
エンディアン変換(ビックなの?リトルなの?)してリコンパイルしてるんだろうね。

|

« 2012年、10年 | トップページ | 今後の改造計画を思案 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/25748/53783887

この記事へのトラックバック一覧です: リトルエンディアンとビッグエンディアン:

« 2012年、10年 | トップページ | 今後の改造計画を思案 »