バイトオーダマクロ

エンディアン (endian) がらみの問題 (ビッグエンディアンとリトルエンディアン 間の違い) は,何らかのプラットフォーム依存かつ固定の形式に従っている 外部のバイナリデータ (例えばデータファイルやネットワーク 経由で入ってくるデータ) を処理するような,可搬性のあるプログラムを 書く上で重要です.以下のマクロはデータを正しい形式に変換する上で役に 立ちます.



wxINTXX_SWAP_ALWAYS



wxInt32 wxINT32_SWAP_ALWAYS(wxInt32 value)



wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value)



wxInt16 wxINT16_SWAP_ALWAYS(wxInt16 value)



wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)

これらのマクロは,変数 value のバイト整列をリトルエンディアンから ビッグエンディアン,またはその逆へと無差別に変換します.すなわち, 現在のプラットフォームに依存せずバイト反転を行います.



wxINTXX_SWAP_ON_BE



wxInt32 wxINT32_SWAP_ON_BE(wxInt32 value)



wxUint32 wxUINT32_SWAP_ON_BE(wxUint32 value)



wxInt16 wxINT16_SWAP_ON_BE(wxInt16 value)



wxUint16 wxUINT16_SWAP_ON_BE(wxUint16 value)

これらのマクロは,ビッグエンディアンアーキテクチャ (Sun ワークステーション など) でプログラムをコンパイルしたときにのみ,変数 value を リトルエンディアンからビッグエンディアンへ,またはその逆に変換を 行います.プログラムをリトルエンディアンアーキテクチャ上でコンパイル した場合,値の変換を行いません.

リトルエンディアン (Intel i386 など) 形式でデータを保存しているファイル からデータを読み書きする際に使ってください.



wxINTXX_SWAP_ON_LE



wxInt32 wxINT32_SWAP_ON_LE(wxInt32 value)



wxUint32 wxUINT32_SWAP_ON_LE(wxUint32 value)



wxInt16 wxINT16_SWAP_ON_LE(wxInt16 value)



wxUint16 wxUINT16_SWAP_ON_LE(wxUint16 value)

これらのマクロは,リトルエンディアンアーキテクチャ (Intel PC など) でプログラムをコンパイルしたときにのみ,変数 value を リトルエンディアンからビッグエンディアンへ,またはその逆に変換を 行います.プログラムをビッグエンディアンアーキテクチャ上でコンパイル した場合,値の変換を行いません.

ビッグエンディアン形式でデータを保存しているファイル からデータを読み書きする際に使ってください.



ymasuda 平成17年11月19日