リトルエンディアン(LittleEndian)環境で、ビックエンディアン(BigEndian)形式でファイルへ書き出し

リトルエンディアン環境ではデータは下位バイトから順番にメモリーに入っている。よって、データへのポインタpdataに対し、アドレス[pdata+size]のデータからアドレス[pdata]までのデータを1byteづつ順番にファイルに書き出せばいい。尚、以下の例の場合4byte境界は考慮していない。

 

 

ex.構造体の書き出し

→上の関数で各要素を順番に書き込むだけ。もちろんファイルを読み込むときも同じ順番で読みこまなきゃダメ。

→配列は各要素ごとに書き込む。エンディアンは各要素間の順番には関係ない。各要素のバイト列の順番が問題。以下の例の文字配列strのようにするのは違う。文字列が逆順になる。

→といいますか1バイトデータの配列(ascii文字列とか)はエンディアンには無関係なので、上の関数使わないで直接Write()すればいい。。。

→C++ならデータとBigEndian書き出し用の関数をセットにしたクラス作れば便利?