1

我想知道如何转换类似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 只能显示为十六进制,这很愚蠢抱歉

4

3 回答 3

1

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

获得整数后,您可以根据需要选择以十六进制打印。你这样做hex

int hexa = ...;
cout << hex << hexa; // prints an int in hexadecimal form
于 2013-05-03T21:09:01.003 回答
0

你有两个选择:

  1. std::strtol
  2. std::stoi

如果输入字符串不是正确的十六进制数,最后一个将引发异常。

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

于 2013-05-03T20:54:28.480 回答
0

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

于 2013-05-03T20:58:47.753 回答