猿问

在C ++中整数到十六进制字符串

在C ++中整数到十六进制字符串

如何在C ++中将整数转换为十六进制字符串?

我可以找到一些方法来实现它,但它们似乎主要针对C。似乎在C ++中没有本地方法。这是一个非常简单的问题; 我有一个int我想转换为十六进制字符串以便以后打印。


Helenr
浏览 653回答 3
3回答

三国纷争

用<iomanip>的&nbsp;std::hex。如果你打印,只需发送std::cout,如果没有,然后使用std::stringstreamstd::stringstream&nbsp;stream;stream&nbsp;<<&nbsp;std::hex&nbsp;<<&nbsp;your_int;std::string&nbsp;result(&nbsp;stream.str()&nbsp;);你可以在前面加上第一<<用<< "0x"或任何你喜欢的,如果你想。其他感兴趣的方式是std::oct(八进制)和std::dec(回到十进制)。您可能遇到的一个问题是,这会产生表示它所需的确切数字位数。您可以使用setfill与setw该规避的问题:stream&nbsp;<<&nbsp;std::setfill&nbsp;('0')&nbsp;<<&nbsp;std::setw(sizeof(your_type)*2)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<<&nbsp;std::hex&nbsp;<<&nbsp;your_int;最后,我建议这样一个功能:template<&nbsp;typename&nbsp;T&nbsp;>std::string&nbsp;int_to_hex(&nbsp;T&nbsp;i&nbsp;){ &nbsp;&nbsp;std::stringstream&nbsp;stream; &nbsp;&nbsp;stream&nbsp;<<&nbsp;"0x"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<<&nbsp;std::setfill&nbsp;('0')&nbsp;<<&nbsp;std::setw(sizeof(T)*2)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<<&nbsp;std::hex&nbsp;<<&nbsp;i; &nbsp;&nbsp;return&nbsp;stream.str();}

潇潇雨雨

使用std::stringstream到整数转换成字符串和特殊操作者设置的基础。例如:std::stringstream&nbsp;sstream;sstream&nbsp;<<&nbsp;std::hex&nbsp;<<&nbsp;my_integer;std::string&nbsp;result&nbsp;=&nbsp;sstream.str();
随时随地看视频慕课网APP
我要回答