リトルエンディアンとビッグエンディアン
そもそも、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アーキテクチャ毎に
エンディアン変換(ビックなの?リトルなの?)してリコンパイルしてるんだろうね。
| 固定リンク



コメント