我想知道如何将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,则只能显示为十六进制,这是愚蠢的抱歉答案 0 :(得分:1)
整数不带标签,说'我是十进制整数'或'我是十六进制整数'。所有整数都是一样的。因此,如果您找到了一些将十六进制字符串转换为整数的代码,那么这就是您应该使用的代码。
获得整数后,您可以选择,如果需要,可以用十六进制格式打印出来。您可以使用hex
int hexa = ...;
cout << hex << hexa; // prints an int in hexadecimal form
答案 1 :(得分:0)
您有两种选择:
std::strtol
std::stoi
如果输入字符串不是正确的十六进制数字,则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
找到所有内容