繁体   English   中英

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

[英]Reading Hex Values from file (C++)

我一直在努力解决这个问题。 我正在尝试读取其中包含十六进制信息的文件,假设该文件的内容如下所示。

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

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

由于我写的代码是一个类的一部分,我创建了一个小程序来演示我正在做的事情。

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;    //

等等...

Applogies如果这篇文章没有意义。 任何反馈意见。

谢谢。

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

尝试阅读unsigned int而不是:

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

另外,尝试使用调试器来探索代码。 例如,您可以将valuebyte添加为监视变量,并单步执行代码。

演示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM