Endianness
エンディアンはメモリ上での複数バイト値の並び順である。ビッグエンディアンは最上位バイトを先頭に、リトルエンディアンは最下位バイトを先頭に格納する。
目的
複数バイトデータの格納と伝送を、CPU アーキテクチャをまたいで一貫させる方法を定める。
メカニズム
ビッグエンディアン:最上位バイトが最下位アドレスに置かれる(0x010203 は 01 02 03 と格納)。ネットワークプロトコルの慣例。リトルエンディアン:最下位バイトが最下位アドレスに置かれる(03 02 01 と格納)。x86/ARM が使用。UTF-16/32 は BOM か明示的なエンディアン宣言を必要とする。
ユースケース
- ネットワークプロトコルのフィールド(ネットワークバイトオーダーはビッグエンディアン)
- バイナリファイル形式(PNG はビッグ、ELF はリトルなど)
- クロスプラットフォームのデータ直列化
- 組込み・ドライバ開発
例
- 入力
0x01020304OutputBE: 01 02 03 04 / LE: 04 03 02 01The same value in both byte orders
よくあるエラー
- Sending host-order integers without network byte order conversion
- Convert explicitly with htonl/ntohl or DataView
関連用語
Byte Order Mark
バイトオーダーマーク (BOM) とは、Unicode テキストの先頭に置かれ、符号化形式とバイト順を示す U+FEFF の文字である。 用語集
UTF-16
UTF-16はUnicodeの可変長符号化形式で、符号位置あたり2バイトまたは4バイトを使用する。BMPの文字は1つの16ビット符号単位、追加面の文字はサロゲートペア(2単位)で表する。 用語集
Binary
二進法は 0 と 1 のみを用いる基数 2 の記数法であり、すべての電子計算機における内部データ表現の基盤である。 用語集
BOM
BOM(バイトオーダーマーク)は Unicode 文字 U+FEFF であり、テキストストリームの先頭に置いて符号化形式とバイト順を示す。 用語集