blog

リトル・エンディアン § ビッグ・エンディアン

リトルエンドストレージでもビッグエンドストレージでも、ローアドレスからハイアドレスに格納されます。...

Feb 19, 2020 · 1 min. read
シェア
リトル・エンド・ストレージであろうとビッグ・エンド・ストレージであろうと、すべてロー・アドレスからハイ・アドレスに格納される。
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となるようにする。
Read next