2010-12-07 89 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'; 
} 
相关问题