0

次のように保存されたデータファイルがあります:

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);
      }
    }
  }
}
4

1 に答える 1

1

ifstreamオブジェクトを使用してデータ ファイルを読み取ることをお勧めします。C++ でファイルを開くとき、テキストではなくバイナリでデータを読み取りたいと言うことができます。BinaryReaderC++ には Java に直接相当するものはありません。

の詳細についてはifstream、このC++ リファレンス ページを参照してください。

于 2012-09-06T10:22:38.417 に答える