小编典典

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

all

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

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


阅读 98

收藏
2022-07-31

共1个答案

小编典典

使用. <iomanip>_
std::hex如果您打印,只需将其发送到std::cout,如果没有,则使用std::stringstream

std::stringstream stream;
stream << std::hex << your_int;
std::string result( stream.str() );

如果你愿意,你可以在第一个前面加上<<你喜欢的任何东西。<< "0x"

其他感兴趣的操作是std::oct(八进制)和std::dec(回到十进制)。

您可能遇到的一个问题是,这会产生表示它所需的确切数字数量。您可以使用setfilland setwthis 来规避问题:

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();
}
2022-07-31