基本上我想要做的是读取二进制文件,并在地址中提取4个连续值,例如8000。例如,4个数字是89 ab cd ef。我想读取这些值并将它们存储到缓冲区中,然后将缓冲区转换为int类型。我尝试了以下方法:
ifstream *pF = new ifstream();
buffer = new char[4];
memset(buffer, 0, 4);
pF->read(buffer, 4);
当我尝试
时cout << buffer << endl;
没有任何反应,我保证在这个位置有值(我可以在十六进制查看器中查看二进制文件)。有谁能告诉我将缓冲区转换为int类型并正确显示它的方法?谢谢。
答案 0 :(得分:2)
<强>更新强>
int number = buffer[0];
for (int i = 0; i < 4; ++i)
{
number <<= 8;
number |= buffer[i];
}
它还取决于Little endian和Bit endian表示法。如果您使用其他方式撰写号码,可以使用number |= buffer[3 - i]
为了显示hex int,您可以使用
#include <iomanip>
cout << hex << number;
答案 1 :(得分:0)
cout << hex << buffer[0] << buffer[1] << buffer[2] << buffer[3] << endl;
请参阅http://www.cplusplus.com/reference/iostream/manipulators/hex/