1. ホーム
  2. c++

[解決済み] C++で整数を16進文字列に変換

2022-03-03 09:26:43

質問

で整数を16進文字列に変換するにはどうすればよいですか? C++ ?

C++でこれを行うためのネイティブな方法はないようです。しかし、これは非常に単純な問題です。 int を16進文字列に変換して、後で印刷したいのですが。

どのように解決するのですか?

使用方法 <iomanip> 's std::hex . 印刷する場合は、単に std::cout を使用し、そうでない場合は std::stringstream

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

最初の <<<< "0x" など、お望みであれば何でも結構です。

その他、気になるマニピュレーションは std::oct (8進数)と std::dec (10進数に戻す)。

問題になりそうなのは、これが表現に必要な桁数を正確に出してしまうことです。あなたは、次のように使用することができます。 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();
}