我想知道如何将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,这是愚蠢的对不起
你只是想打印基数为16?如果是这样的话:cout << std :: hex << Hexa。注意:就处理器而言,“int y = 0x1f”转换为00000000 00000000 00000000 00011111(假设32位整数)。 – 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