バイトオーダー

今までテキストファイルしか扱ってこなかったんで、初めてまともにバイナリファイルをいじったら見事にバイトオーダーで詰まりました。


x86プロセッサにおいて、メモリ上のデータはリトルエンディアンで並んでいます。
そこにint型の変数xを確保します。
xにバイナリファイルからビッグエンディアンで並んでいる4バイトをstd::ifstreamクラスのreadメソッドで突っ込みます。
読み取ったバイトはバイナリファイルと同じ並びで配置されますが、プロセッサがこのxの内容をint型として扱うときはリトルエンディアンで並んでいる事が期待されて読み取られます。
結果、意図しているByteの並び順とは逆の順番で読み取られます。


見事に引っかかったぜハハハ。
バイトの並びを逆順にする関数作って解決しました。