私はやってみたいです:
int a = 255;
cout << a;
出力にFFを表示していますか、これをどうすればよいですか?
つかいます:
#include <iostream>
...
std::cout << std::hex << a;
出力番号の正確な書式設定を制御する他の多くのオプション があります(先行ゼロや大文字/小文字など)。
std::hex
は、<ios>
に含まれる<iostream>
で定義されています。ただし、std::setprecision/std::setw/std::setfill
/etcなどを使用するには、<iomanip>
を含める必要があります。
ストリームを操作して16進数で印刷するには、hex
マニピュレーターを使用します。
cout << hex << a;
デフォルトでは、16進文字は小文字で出力されます。大文字に変更するには、uppercase
マニピュレーターを使用します。
cout << hex << uppercase << a;
後で出力を小文字に戻すには、nouppercase
マニピュレーターを使用します。
cout << nouppercase << b;
単一の16進数を出力してから10進数に戻す場合は、これを使用できます。
std::cout << std::hex << num << std::dec << std::endl;
使用できるフラグとマスクにはさまざまな種類があります。詳細については、 http://www.cplusplus.com/reference/iostream/ios_base/setf/ を参照してください。
#include <iostream>
using namespace std;
int main()
{
int num = 255;
cout.setf(ios::hex, ios::basefield);
cout << "Hex: " << num << endl;
cout.unsetf(ios::hex);
cout << "Original format: " << num << endl;
return 0;
}
これはOPが要求したものではないことは理解していますが、それでもprintfでそれを行う方法を指摘する価値があると思います。私はほとんどの場合、std :: cout(以前のCのバックグラウンドがなくても)よりもそれを使用することを好みます。
printf("%.2X", a);
「2」は精度を定義し、「X」または「x」は大文字と小文字を定義します。
std::hex
は16進形式を取得しますが、ステートフルオプションです。つまり、状態を保存および復元する必要があります。そうしないと、すべての将来の出力に影響します。
単純にstd::dec
に戻すことは、フラグが以前あった場所でのみ有効であり、特にライブラリを作成している場合はそうではありません。
#include <iostream>
#include <ios>
...
std::ios_base::fmtflags f( cout.flags() ); // save flags state
std::cout << std::hex << a;
cout.flags( f ); // restore flags state
これは、グレッグヒューギルの回答と 別の質問 からの情報を組み合わせたものです。