字符串中的十六进制到整数中的十六进制

时间:2013-05-03 20:51:09

标签: c++ std

我想知道如何将string x = "1f"之类的内容转换为int y = 0x1f,我发现的每个主题都通过将其转换为简单的整数值(31)或将字符串转换为十六进制来解决等效"Hello" > 48656C6C6F

std::stringstream Strm;
std::string Stng = "1f";
Strm << Stng;
int Hexa;
Strm >> std::hex >> Hexa;
cout << Hexa;

这个最接近的我可以得到它(但事实证明它只是将它转换为整数)

编辑:我想我的问题是我不知道它必须存储为整数,如果我在cout之后添加std :: hex,则只能显示为十六进制,这是愚蠢的抱歉

3 个答案:

答案 0 :(得分:1)

整数不带标签,说'我是十进制整数'或'我是十六进制整数'。所有整数都是一样的。因此,如果您找到了一些将十六进制字符串转换为整数的代码,那么这就是您应该使用的代码。

获得整数后,您可以选择,如果需要,可以用十六进制格式打印出来。您可以使用hex

执行此操作
int hexa = ...;
cout << hex << hexa; // prints an int in hexadecimal form

答案 1 :(得分:0)

您有两种选择:

  1. std::strtol
  2. std::stoi
  3. 如果输入字符串不是正确的十六进制数字,则last会抛出异常。

    请记住,在计算机中所有整数都以二进制形式存储,十六进制只是一个演示文稿。例如,ASCII字符'a'与十进制数97相同,与八进制数141相同,十六进制数61相同,二进制数相同(它最终存储在内存中)01100001

答案 2 :(得分:0)

一个非常快速的解决方案是使用boost :: lexical cast。你可以在http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast.html

找到所有内容