2010-12-07 84 views
1

你好 我有誰作爲其輸入端接收一個十六進制數字的字符串解析器: 例如: 串x =「0x120005f38」如何將字符串轉換爲無符號長整型。與一捻

正如你所看到的數字是十六進制,我怎麼轉換這要無符號長?

如果這是基於十進制的字符串,我可以使用字符串作爲unsigned long函數。 我猜測有幾個步驟,我不知道要使用什麼樣的順序或功能。 1)我需要將十六進制轉換爲十進制 2)並將字符串轉換爲無符號長整數。

這對我來說似乎非常棘手,有什麼想法?

回答

7

使用strtoul:上cplusplus.com

strtoul("0x120005f3", 0, 0); 

strtoul參考。看看這是如何工作在Codepad

編輯:改爲strtoul,沒有注意到unsigned long是必需的。

+0

+1的鍵盤! – egrunin 2010-12-07 20:19:09

1

您可以指定strtoul函數的base參數,該函數允許在字符串上使用前綴0x

0

如果是從字面上你的代碼,只是不讓它面值整數以0x前綴:int x = 0x120005f38;

1

使用流:

#include <iostream> 
#include <sstream> 
int main() 
{ 
    const char* X="0x120005f38"; 
    std::stringstream ss(X); 
    long long var; //your value is too large for my long 
    ss >> std::hex >> var; 
    std::cout << var << ' ' << std::hex << var << '\n'; 
} 
相關問題