我有一个 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 位字长和小端或大端字节顺序。
我想如果我按照上面的方式这样做,情况就不会如此。现在我怎么能做到这一点?我听说过序列化,但我还没有为这个实例找到具体的解决方案。