:printfが正しく読み込まれたときにstd :: coutがベクトルからガーベジを読み込んでいますか?このコードで
// read bootrom
std::ifstream bootrom_file (bootrom_path, std::ios::binary | std::ios::ate);
const int bootrom_size = bootrom_file.tellg();
bootrom_file.seekg(0, std::ios_base::beg);
// allocate bootrom_size bytes for the bootrom vector
bootrom.resize(bootrom_size);
if(bootrom_size != 0x100)
{
std::cerr << "boot ROM is not 256 bytes!\n";
}
if(bootrom_file)
{
bootrom_file.read(reinterpret_cast<char*>(bootrom.data()), bootrom_size);
}
// prints 0xC3 0x31
printf("%#02x %#02x\n", rom[0], bootrom[0]);
// prints ? 1
std::cout << std::hex << rom[0] << " " << std::hex << bootrom[0] << "\n";
のstd :: coutをプリントアウト? 1、printfは正しい0xC3 0x31を出力します。私はここで間違って何をしていますか?
romとbootromは両方ともuint8_tのstd :: vectorであり、romはbootromと同じコードを使用して設定されています。
'rom'は' char'配列ですか? '(int)rom [0]'を試してください。 – AlexD
私はそれがベクトルであることをそこに加えましたuint8_t –
'typedef unsigned char uint8_t; 'のようなものがありますので、' cout'は文字を出力します。 – AlexD