从.dat文件中读取2个字节

时间:2012-08-25 11:30:24

标签: c++ visual-c++

我有一个像这样存储的数据文件:

6字节(3 * 16位)标头。 - 字节0 + 1(16位):x维 - 字节2 + 3(16位):y维度 - 字节4 + 5(16位):z维度 然后:x,y,z顺序的3D体积数据。每个体素16位(2个字节),只使用这16个中的12位。

我想加载数据并使用C ++将其存储在数组中

那么如何从.data文件加载2个字节我想要实现的算法

load(String filename)
{
 File fp = openfile(filename);
 Byte2 sizeX, sizeY, sizeZ;
 sizeX = readfile(sizeof(Byte2),fp);
 sizeY = readfile(sizeof(Byte2),fp);
 sizeZ = readfile(sizeof(Byte2),fp);
 UnsignedShort data[sizeX*sizeY*sizeZ];
 for(Integer z=0; z < sizeZ; z++) {
    for(Integer y=0; y < sizeY; y++) {
       for(Integer x=0; x < sizeX; x++) {
        data[x+y*sizeX+z*sizeX*sizeY] = readfile(sizeof(Byte2),fp);
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

我建议使用ifstream对象来读取数据文件。当您使用C ++打开文件时,您可以提到您想要read the data in binary而不是文本。在C ++中没有Java BinaryReader的直接等价物。

有关ifstream的更多详细信息,请参阅此C++ reference page