[英]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;
//...
}
另外,嘗試使用調試器來探索代碼。 例如,您可以將value
和byte
添加為監視變量,並單步執行代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.