gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:27:17 24 4
gpt4 key购买 nike

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

最佳答案

更新

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;

关于C++。将二进制文件读入缓冲区后,如何以十六进制显示缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com