エンディアン
エンディアン はバイト・オーダーを記述するデータ属性です。 アプリケーションでは、データを交換するときに、マルチバイト・データの配列規則が認識される必要があります。 そうしないと、データの解釈を誤る可能性があります。
データでは、以下のバイト配列フォーマットが可能です。
- ビッグ・エンディアン
- このフォーマットでは、最上位バイトが最初に格納されます。 その他のバイトは、
重みの降順で続きます。 例えば、4 バイト語の場合、バイト・オーダーは 0、1、2、3 になります。 2 バイト語の場合は、0、1 です。
ビッグエンディアン形式は、 pSeries, IBM® zSystems™、 iSeries, Sun、HPで使用されています。
- リトル・エンディアン
- このフォーマットでは、最下位バイトが最初に格納されます。 その他のバイトは、
重みの昇順で続きます。 例えば、4 バイト語の場合、バイト・オーダーは 3、2、1、0 となります。 2 バイト語の場合は、1、0 です。
リトルエンディアン形式は、 xSeries を含む Intel ベースのマシンで使用されています。
エンディアンが影響するのはマルチバイト・データのみです。 1 バイト内のビットの順序は常に同じです。 バイト内のビット順序は、常に 7、6、5、4、3、2、1、0 です。
UTF-8 データは、エンディアンの影響を受けません。これは、データが複数バイトとして格納されている場合も同様です。 UTF-16 データおよび UTF-32 データは、
エンディアンの影響を受けます。 例えば、以下の表に示すように、文字「A」は UTF-16 および UTF-32 でエンコードされます。
| UTF-16 | UTF-321 | |
|---|---|---|
| ビッグ・エンディアン | X'0041' | X'00000041' |
| リトル・エンディアン | X'4100' | X'41000000' |
注:
- Db2 for z/OS® は、データを UTF-32 では保管しません。
異なるエンディアン・フォーマットを使用するシステムおよびアプリケーション間でデータを交換するときに、データが適切に変換されないと、エンディアンが問題になる可能性があります。 システムまたは アプリケーションで処理するデータのエンディアン・フォーマットに注意してください。 トレース内の文字エンコード値を調べた際に、エンディアンの問題に気付くことが あります。 数値のバイト値が入れ替わっていることに気付くような場合に、 そのような問題が存在しています。 例えば、X'0041' を予期している 場合に表示は X'4100' になっています。