0
我有一個C++腳本,它涉及可能的十六進制數字的字符串表示形式。在腳本的後面部分,我想將這些可能的十六進制數字轉換爲基數爲10的一些算術的雙打。爲了嘗試進行這種轉換,我使用了一個函數。字符串轉換中的十六進制值
double MyFunction(string input)
{
double Number;
stringstream ss(input);
ss >> hex >> Number;
return Number;
}
當我的腳本運行時,似乎結果轉換的字符串只被視爲十進制數。如果原始字符串是「fc」或「b5」,則表示轉換後的數字是-9.25596e + 061。但是如果字符串是「33」(應該是0x33),它將它視爲十進制33.我已經嘗試了它,而沒有「>> hex」,並在轉換之前向字符串添加了一個「0x」前綴編譯似乎像理解0xF一樣理解0xF),但沒有這樣的運氣。
我知道計算機將所有東西都存儲爲二進制,並且數字的基數沒有存儲,但我根本不明白這裏出了什麼問題。爲什麼它似乎堅持以10爲基數讀取字符串並忽略A-F的任何實例?
任何幫助將不勝感激。
工作正常!詹姆斯,謝謝你! – anon