如何在C++中将整数转换为十六进制字符串?
我可以找到一些方法来做到这一点,但它们似乎主要针对 C。在 C++ 中似乎没有本地方法可以做到这一点。这是一个非常简单的问题;我有一个int我想将其转换为十六进制字符串以供以后打印。
int
使用. <iomanip>_ std::hex如果您打印,只需将其发送到std::cout,如果没有,则使用std::stringstream
<iomanip>
std::hex
std::cout
std::stringstream
std::stringstream stream; stream << std::hex << your_int; std::string result( stream.str() );
如果你愿意,你可以在第一个前面加上<<你喜欢的任何东西。<< "0x"
<<
<< "0x"
其他感兴趣的操作是std::oct(八进制)和std::dec(回到十进制)。
std::oct
std::dec
您可能遇到的一个问题是,这会产生表示它所需的确切数字数量。您可以使用setfilland setwthis 来规避问题:
setfill
setw
stream << std::setfill ('0') << std::setw(sizeof(your_type)*2) << std::hex << your_int;
所以最后,我建议这样一个功能:
template< typename T > std::string int_to_hex( T i ) { std::stringstream stream; stream << "0x" << std::setfill ('0') << std::setw(sizeof(T)*2) << std::hex << i; return stream.str(); }