エンディアン、もしくはバイトオーダーとは、バイトから数字の構成方法です。
メモリの個々の領域にはインデックス、もしくはアドレスが付与されています。1 バイトには 8 ビット、つまり 0x00
から 0xff
までの数値が保存できます。つまりそれ以上大きい値を保存するなら、1 バイトよりも大きい領域を使わなければなりません。今ところ、もっともよく使われているバイトオーダーはリトルエンディアンです。これはインテルのプロセッサでしようされています。リトルエンディアンでは、ちょうどヨーロッパの日付の記法(例:31 December 2050)のように、下位バイトから上位バイトの順に数値を保存します。
対照的なものにビッグエンディアンがあります。ビッグエンディアンでは、ISO のように(例 2050-12-31)、上位バイトから下位バイトの順に保存します。インターネット標準ではビッグエンディアンでデータを転送することを定めている関係で、「ネットワークバイトオーダー」とも呼ばれます。この転送方式は、UNIX の標準的なソケット通信から始まり、Web の標準化されたバイナリデータ構造まで続いています。また 68000 や PowerPC のプロセッサを使用していた古い Mac もビッグエンディアンを利用していました。
例えば 0x12345678
(十進法では 305 419 896)は、それぞれ次のように表現されます
- リトルエンディアン:
0x78 0x56 0x34 0x12
- ビッグエンディアン: 0x12 0x34 0x56 0x78
- ミックスドエンディアン(非常に稀): 0x34 0x12 0x78 0x56
関連情報
ArrayBuffer
DataView
- Typed Arrays
- Endianness on Wikipedia