【发布时间】:2018-03-02 13:56:27
【问题描述】:
我正在尝试读取 .bin 文件并返回十六进制值。在它必须读取诸如“F0”或“A0”之类的值之前,一切正常。它不断返回“ffffa0”或“ffffa0”。当我修改函数以返回十进制值时,控制台显示“-16”和“-96”,而所有其他正确的返回值都是正数。
void reader(string input) {
int size;
char *storage;
ifstream file(input, ios::in | ios::binary);
if (file.is_open()) {
file.seekg(0, ios::end);
size = file.tellg();
storage = new char[size];
file.seekg(0, ios::beg);
file.read(storage, size);
file.close();
for (int i = 0; i < size; i++)
{
cout << hex << (int)storage[i] << endl;
}
}
else {cout << "could not open file" << endl;}
}
【问题讨论】:
-
代替
(int)storage[i],试试这个:(storage[i] & 0xFF)。 -
想想
char是什么。