我有一个像这样存储的数据文件:
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);
}
}
}
}
答案 0 :(得分:1)
我建议使用ifstream
对象来读取数据文件。当您使用C ++打开文件时,您可以提到您想要read the data in binary而不是文本。在C ++中没有Java BinaryReader
的直接等价物。
有关ifstream
的更多详细信息,请参阅此C++ reference page。