バイナリ ファイルに保存したい、float のベクトルのベクトルとして表される 3D ボリュームがあります。(これは、CT スキャナーからの X 線画像から再構成された密度ボリュームです。)
今、私は次の方法でこれを行うことができます:
//iterate through the volume
for (int x = 0; x < _xSize; ++x){
for (int y = 0; y < _ySize; ++y){
for (int z = 0; z < _zSize; ++z){
//save one float of data
stream.write((char*)&_volume[x][y][z], sizeof(float));
}
}
}
これは基本的に機能します。ただし、これがどの程度プラットフォームに依存しないかを自問しています。作成されたシステムに関係なく、同一のファイルを作成したいと思います。そのため、Windows、Linux、または Mac を実行しているマシンがあり、それらのワード長は 32 ビットまたは 64 ビットで、バイト順はリトル エンディアンまたはビッグ エンディアンです。
私がこれを上記の方法で行った場合、これは当てはまらないと思います。どうすればこれを達成できますか?シリアル化について聞いたことがありますが、このインスタンスの具体的な解決策は見つかりませんでした。