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

标签 c++ decimal hex int

如何在 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"或者你喜欢的任何东西。

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

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

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

关于c++ - C++中的整数到十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5100718/

相关文章:

c - atoi 和前导 0 用于十进制数

c# - Console.WriteLine 为十六进制

powershell - 如何将十六进制编码的字符串转换为十六进制整数

c++ - "vector subscript out of range"

c++ - 静态结构链接器错误

java - 带组分隔符和小数分隔符的数字转换为十进制数

c# - c#中long到decimal的转换

c++ - 如何以十六进制而不是 ASCII 符号显示实际值

c++ - C++语法 “A::B:A {};”是什么意思

c++ - 具有共享 OpenGL 上下文的 QOpenGLWidget?