你好 我有誰作爲其輸入端接收一個十六進制數字的字符串解析器: 例如: 串x =「0x120005f38」如何將字符串轉換爲無符號長整型。與一捻
正如你所看到的數字是十六進制,我怎麼轉換這要無符號長?
如果這是基於十進制的字符串,我可以使用字符串作爲unsigned long函數。 我猜測有幾個步驟,我不知道要使用什麼樣的順序或功能。 1)我需要將十六進制轉換爲十進制 2)並將字符串轉換爲無符號長整數。
這對我來說似乎非常棘手,有什麼想法?
你好 我有誰作爲其輸入端接收一個十六進制數字的字符串解析器: 例如: 串x =「0x120005f38」如何將字符串轉換爲無符號長整型。與一捻
正如你所看到的數字是十六進制,我怎麼轉換這要無符號長?
如果這是基於十進制的字符串,我可以使用字符串作爲unsigned long函數。 我猜測有幾個步驟,我不知道要使用什麼樣的順序或功能。 1)我需要將十六進制轉換爲十進制 2)並將字符串轉換爲無符號長整數。
這對我來說似乎非常棘手,有什麼想法?
使用strtoul
:上cplusplus.com
strtoul("0x120005f3", 0, 0);
strtoul
參考。看看這是如何工作在Codepad。
編輯:改爲strtoul
,沒有注意到unsigned long
是必需的。
您可以指定strtoul
函數的base
參數,該函數允許在字符串上使用前綴0x
。
如果是從字面上你的代碼,只是不讓它面值整數以0x前綴:int x = 0x120005f38;
使用流:
#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';
}
+1的鍵盤! – egrunin 2010-12-07 20:19:09