如何将String转换为无符号长整型。扭曲

时间:2010-12-07 20:06:01

标签: c++ string

您好 我有一个字符串解析器,它接收十六进制数作为其输入: 例如: 字符串X =“0x120005f38”

正如您所看到的数字是HEX,如何将其转换为无符号长?

如果这是基于十进制的字符串,我可以将字符串用于unsigned long函数。 我猜有几个步骤,我不确定使用什么顺序或功能。 1)我需要将十六进制转换为十进制 2)和String into unsigned long。

这对我来说似乎很棘手,任何想法?

4 个答案:

答案 0 :(得分:7)

使用strtoul

strtoul("0x120005f3", 0, 0);
关于cplusplus.com

strtoul参考。请参阅Codepad上的工作原理。

编辑:已更改为strtoul,但没有注意到unsigned long是必需的。

答案 1 :(得分:1)

您可以指定strtoul函数的base参数,该参数允许字符串上有0x前缀。

答案 2 :(得分: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';
}

答案 3 :(得分:0)

如果这确实是你的代码,只是不要使它成为带有0x前缀的文字整数:int x = 0x120005f38;