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

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

我可以找到一些方法来做到这一点,但他们大多数似乎针对C。似乎没有一个本机的方式来做它在C。这是一个很简单的问题;我有一个int,我想转换为十六进制字符串以供以后打印。

使用< iomanip>的std::hex.如果你打印,只是发送到std :: cout,如果没有,然后使用std::stringstream

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

您可以在第一个<<与<< “0x”或任何你喜欢的,如果你愿意。 其他感兴趣的manips是std :: oct(八进制)和std :: dec(回到十进制)。 你可能遇到的一个问题是,这产生了表示它所需的精确数量的数字。你可以使用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();
}
http://stackoverflow.com/questions/5100718/integer-to-hex-string-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C中的整数到十六进制字符串