你好 我有谁作为其输入端接收一个十六进制数字的字符串解析器: 例如: 串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