如何在 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/5100718/