1

基本上我想要做的是读取一个二进制文件,并在地址例如 0x8000 处提取 4 个连续值。例如,这 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 类型并正确显示它的方法?谢谢你。

4

2 回答 2

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]

为了显示十六进制整数,您可以使用

#include <iomanip>
cout << hex << number;
于 2012-06-14T17:24:40.530 回答
0
cout << hex << buffer[0] << buffer[1] << buffer[2] << buffer[3] << endl;

http://www.cplusplus.com/reference/iostream/manipulators/hex/

于 2012-06-14T17:40:31.010 回答