C++ を使用してバイナリ ファイルを読み込むプログラムを作成しようとしています。助けを求めていた異常な出力に遭遇しました。
次の 4 バイトで始まるバイナリ ファイルがあります。
A1 B2 C3 D4 (を使用して検証hexdump -C
)
そして、これらの4バイトを読み取るために使用しているコードは次のとおりです。
#include <iostream> // for reading and writing files
#include <fstream>
using namespace std;
char * buffer;
unsigned int LENGTH = 4;
int main(int argc, char ** argv)
{
// open the binary file
ifstream infile ("dump", ios::binary | ios::in);
// create a buffer
buffer = new char[LENGTH];
// read LENGTH bytes from the file
infile.read(buffer, LENGTH);
// append the null byte to terminate the string
buffer[LENGTH] = '\0';
// loop over the 4 bytes read, and print
for(int i = 0; i < LENGTH; i++)
{
printf("Buffer[%d] is %X\n", i, buffer[i]);
}
delete[] buffer;
infile.close();
return 0;
}
このプログラムは私にこれらの実際の結果を与えます:
Buffer[0] is FFFFFFA1
Buffer[1] is FFFFFFB2
Buffer[2] is FFFFFFC3
Buffer[3] is FFFFFFD4
しかし、私はこれらの結果を期待します:
Buffer[0] is A1
Buffer[1] is B2
Buffer[2] is C3
Buffer[3] is D4
3 0xFF バイトがどこから来ているのか誰か説明してもらえますか? ファイルの最初の 4 バイトにのみ影響しているように見えます。