十六进制字符串到十六进制整数
我想知道如何将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;
这最接近我能得到它(但实际上它只是将其转化为整数)
编辑:我想是我不知道我的问题,它必须被存储为整数,只能显示为十六进制,如果我添加std ::十六进制后cout,这是愚蠢的对不起
整数不带标签说'我是十进制整数'或'我是十六进制整数'。所有的整数都是一样的。所以,如果你已经找到了一些将十六进制字符串转换为整数的代码,那么这就是你应该使用的代码。
一旦你有你的整数,你可以然后选择以十六进制打印出来,如果你想。你这样做hex
int hexa = ...;
cout << hex << hexa; // prints an int in hexadecimal form
你有两个选择:如果输入的字符串是不正确的十六进制数
最后会抛出异常。
请记住,在计算机中所有整数都以二进制存储,十六进制只是一个表示。例如,ASCII字符'a'
与十进制数97
相同,并且与八进制数141
相同,并且与十六进制数61
相同,并且与二进制数相同(其最终被存储在存储器中)01100001
。
这将是61,而不是六十六... – 2013-05-03 22:28:02
一个相当快的解决方案是使用boost :: lexical cast。你可以在这里找到所有的东西http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast.html
你只是想打印基数为16?如果是这样的话:cout EHuhtala 2013-05-03 20:54:20
“它只是将其转换为整数” - 这是可以预料的。没有像十六进制整数这样的东西。 – 2013-05-03 20:56:15
'int y = 0x1f'和'int y = 31'是相同的。 'int'没有表达它的基数的概念。 – 2013-05-03 20:56:53