2011-07-25 90 views
0

如何將十六進制數字的字符串表示形式寫入文件?例如,如果我有一個十六進制值0x001A(即十進制的26),我希望它以十六進制字符串0x001A寫入文件,而不是十進制字符串26或原始字節流。將十六進制數字寫入文件

+0

你是怎麼看這個文件的?它'存儲'爲十六進制值,我很確定,但只是選擇將它顯示爲小數點。你有沒有試過用另一個C++例程讀回來,然後做一個邏輯比較? – Randy

回答

4

您可以使用std::hex修改的勞動力數字的十六進制寫作:

std::cout << std::hex << 10 << std::endl; 

這個輸出 「一」。您可以添加「0x」來完成表示。您還可以通過在std::hex之後添加std::uppercase來輸出大寫字母的十六進制數字,也可以使用大寫字母std::setfill('0')來填充左邊的大小,使用'0'和std::setw(X)來設置所需的寬度。

因此,例如,3個十六進制數字,大寫字母和 '0' 補:

std::cout << "0x" << std:hex << std::uppercase << std::setw(3) << std::setfill('0') << 10 << std::endl; 

將打印準確"0x00A"

+2

請注意,您需要關閉「十六進制模式」,因爲單次輸出後狀態不清晰;使用'std :: dec'切換回十進制表示法。然而,'std :: setfill'和'std :: width'在一次輸出後自行清除,所以你需要在輸出每個數字之前使用它們。 –

+2

建立一個臨時的'std :: stringstream'通常很有用,在它上面設置標誌,然後把流的'.str()'發送到'std :: cout',這樣'cout'的狀態就不是改性。 – Kos

+0

科斯André,感謝您的見解! –

相關問題