C ++。将二进制文件读入缓冲区后,如何以十六进制显示缓冲区?

时间:2012-06-14 17:22:10

标签: c++ filestream binaryfiles

基本上我想要做的是读取二进制文件,并在地址中提取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类型并正确显示它的方法?谢谢。

2 个答案:

答案 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/