gpt4 book ai didi

c++ - 从文件中读取十六进制值 (C++)

转载 作者:行者123 更新时间:2023-11-30 02:40:40 25 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了一段时间。我正在尝试读取一个包含十六进制信息的文件,假设文件的内容如下所示。

00 00 e0 3a 12 16 00 ff fe 98 c4 cc ce 14 0e 0a aa cf

我正在寻找一种在 C++ 中读取每个“字节”信息(同时忽略空格)的方法。

由于我正在编写的代码是类(class)的一部分,因此我创建了一个小程序来演示我目前正在做的事情。

int main(void)
{
int i = 0;
unsigned char byte;
unsigned char Memory[50];
ifstream f_in;
f_in.open("file_with_hex_stuff.txt");

f_in >> skipws; // Skip Whitespace
while(f_in >> hex >> byte)
{
Memory[i++] = byte;
}
return 0;
}

(如果上面的代码无法编译,我深表歉意,这只是为了让您了解我想要的东西。我希望数组是这样的:

Memory[0] => 0x00;
Memory[1] => 0x00;
Memory[2] => 0xe0;
Memory[3] => 0x3a;
Memory[4] => 0x12;

等....

但它会将每个数字加载到数组中它自己的位置,如下所示:

Memory[0] => 0x00;    // 2 LOCATIONS USED FOR 0x00
Memory[1] => 0x00; //

Memory[2] => 0x00; // 2 LOCATIONS USED FOR 0x00
Memory[3] => 0x00; //

Memory[4] => 0x0e; // 2 LOCATIONS USED FOR 0xe0
Memory[5] => 0x00; //

Memory[6] => 0x03; // 2 LOCATIONS USED FOR 0x3a
Memory[7] => 0x0a; //

等...

如果这篇文章没有意义,请采纳。感谢任何反馈。

谢谢。

最佳答案

从您的输出来看,您的程序一次读取一个十六进制数字。

尝试读入 unsigned int:

unsigned int value;
while (f_in >> hex >> value)
{
byte = ((unsigned char) (value & 0xff);
Memory[i++] = byte;
//...
}

此外,尝试使用调试器来探索您的代码。例如,您可以添加 valuebyte 作为 watch 变量并单步执行代码。

Demo.

关于c++ - 从文件中读取十六进制值 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787418/

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