我确定这是一个简单的问题,但我正在尝试输出文件中每个字节的十六进制值(在本例中为 *.bmp)。我已成功将文件加载到内存中,并且能够打印字节的十六进制值。但是当我打印某些字节时,当我打印某些字节时,例如第 3 个字节(在偏移量 2 处),它会打印 FFFFFFE6,但我的文件的 hexdump(使用 HxD)说它只是 E6。这仅发生在某些字节上,其他字节打印得很好。
Main.cpp 是:
#include "main.h"
int main ()
{
ifstream::pos_type size;
char * memblock;
ifstream file ("C:\\hex.bmp", ios::in|ios::binary|ios::ate);
size = file.tellg();
memblock = new char [size];
file.seekg(0, ios::beg);
file.read(memblock, size);
file.close();
printf("%X", memblock[2]);
delete[] memblock;
cin.get();
}
Main.h 是:
#ifndef MAIN_H
#define MAIN_H
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
#endif