エンディアン
エンディアンは、コンピューターサイエンスで、データの保存方法を表す用語です。具体的には、複数バイトのデータ型のどちら側に最上位の値が含まれるかを定義します。エンディアンには、ビッグエンディアンとリトルエンディアンの2種類があります。
ビッグエンディアン
ビッグエンディアンは、バイナリデータを保存する最も一般的な方法です。最上位(または最大)の値を最初に置き、その後に下位の値を続けます。たとえば、整数123をビッグエンディアンで表す場合、百の位の値(1)を最初に置き、次に十の位の値(2)、その後に一の位の値(3)を置きます。つまり、[123]となります。
リトルエンディアン
リトルエンディアンでは、最下位の値を最初に置き、その後に、より上位の値を順番に置きます。たとえば、数値123をリトルエンディアン表記にすると[321]になります。テキスト文字列"ABC"は、[CBA]として表されます。
エンディアン変換
ほとんどの場合、開発者がエンディアンを指定する必要はありません。コンパイラーが、特定のプラットフォームに適したデータ型を生成するためです。ただし、プログラムで、異なるエンディアンでデータを保存するファイル形式など、外部の入力を処理する必要がある場合があります。この場合、データをリトルエンディアンからビッグエンディアンへ、またはその逆に変換する必要があります。
エンディアンの変換は、データを単純に逆順にするだけではありません。逆順にする必要があるのは、ビットではなくバイトです。つまり、各バイト(8ビットのブロック)はそのままにして、バイトの順序を変更します。これは、データの16進数表現または二進法表現を使って説明できます。
たとえば、整数41,394は、ビッグエンディアン表記では次のように表されます。
16進数: A1B2
二進法: 1010000110110010
このデータをリトルエンディアンに変換する場合、データ全体を逆順にするのではなく、データ内の各バイトを逆順にします。16進数では、各バイトを2桁で表すため[A1][B2]となり、二進法では8桁で表すため[10100001][10110010]となります。
したがって、41,394のリトルエンディアン表現は次のようになります。
16進数: B2A1
二進法: 1011001010100001
NOTE: 一部のプロセッサは、変換を必要とせずにビッグエンディアンまたはリトルエンディアンのどちらでもデータを取得できます。これは、双方向エンディアンのデータアクセスと呼ばれます。
知識をテストする