次のバイナリ構成でバイナリファイルを読み込もうとしています
00 00 00 1A 79 20 83 DB 44 ...
次の機能を使用する
static BitArray getBitArray(string filename)
{
FILE *fs = fopen(filename.data(),"r");
fseek (fs , 0 , SEEK_END);
unsigned long s = ftell (fs);
rewind (fs);
unsigned char *buffer = new unsigned char[s+1];
fread(buffer,1,s,fs);
BitArray bArray;
for(int i=0; i<s; i++)
bArray.add(buffer[i]);
delete[] buffer;
fclose(fs);
return bArray;
}
BitArray
私自身のビット操作クラスはどこにありますか。問題は、前述のbinファイルの場合、次のように最初の3つの0のみを読み取ることです。
00 00 00
fseek
正しいファイルサイズが見つかりましたが。
その文字列0が必要な理由00 00 00 1A
は、32ビット整数を形成するためです。これはたまたま3を残すのに十分小さいため0x00
です。
ファイルの先頭にあるsの文字列が0x00
として認識されるEOF
のではないかと思ったので、ファイルの前に文字を埋めてみましたが、うまくいきませんでした。
これを引き起こしている可能性がありますか?