如何在 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
(回到十进制)。您可能遇到的一个问题是,这会产生表示它所需的确切数字数量。您可以使用
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();
}
关于c++ - C++中的整数到十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64205067/