リトル・エンド・ストレージであろうとビッグ・エンド・ストレージであろうと、すべてロー・アドレスからハイ・アドレスに格納される。
1. 数ストレージの場合、下位アドレスは変数の下位バイトを保持する。
2. ビッグエンディアン・ストレージの場合、下位アドレスは変数の上位バイトを保持する。
例えば、0xABCDEFGHの場合である。,
(アドレスは小さい方から大きい方へ)
------------------------------------->
: 0xGH 0xEF 0xCD 0xAB
: 0xAB 0xCD 0xEF 0xGH
異なるアーキテクチャを持つ2つのシステム間で通信している場合、バイトストリームを送信しているので、例えば、 末は0x11223344を送信する。,
(アドレスは小さい方から大きい方へ)
------------------------------------->
小端: 0x11 0x22 0x33 0x44
: 0x11 0x22 0x33 0x44
は0x11 0x22 0x33 0x44のバイトストリームも受信するが、大端にとっては0x44332211を表す。
システム・アーキテクチャに起因するこの問題を回避するためには、htons htonlを通してホストオーダーを均一なネットワークオーダーに変換する必要がある。,
次に、スモール/ラージ・エンドでntohl ntohsを呼び出し、ネットワーク・オーダーをホスト・オーダーに変換する。
上記を例にとってみよう。
(アドレスは小さい方から大きい方へ)
------------------------------------->
小端: 0x11 0x22 0x33 0x44
|
|
ネットワーク 0x44 0x33 0x22 0x11
|
|
大端: 0x44 0x33 0x22 0x11
同じ値が、小端では0x44332211、大端では0x44332211となるようにする。