回答:
使用する:
#include <iostream>
...
std::cout << std::hex << a;
先行ゼロや大文字/小文字など、出力番号の正確なフォーマットを制御する他の多くのオプションがあります。
ios::fmtflags f(cout.flags());
、で復元できますout.flags(f);
。
std::cout.flags(f);
ストリームを操作して16進数で出力するには、hex
マニピュレーターを使用します。
cout << hex << a;
デフォルトでは、16進文字は小文字で出力されます。大文字に変更するには、uppercase
マニピュレータを使用します。
cout << hex << uppercase << a;
後で出力を小文字に戻すには、nouppercase
マニピュレーターを使用します。
cout << nouppercase << b;
nouppercase
戻って小数への出力を変更するつもり?
これはOPが要求するものではないことを理解していますが、printfでそれを行う方法を指摘することは価値があると私はまだ思います。ほとんどの場合、std :: cout(以前のCバックグラウンドがない場合でも)よりも使用することを好みます。
printf("%.2X", a);
「2」は精度を定義し、「X」または「x」は大文字と小文字を定義します。
printf("hello\n")
と等価ですfprintf(stdout, "hello\n")
。さらに便利なことに、引数を取る関数にstdout
(またはstdin
、またはstderr
)を渡すことができFILE*
ます。
同様に使用できるさまざまな種類のフラグとマスクがあります。詳細については、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;
}
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
これは、Greg Hewgillの回答と別の質問の情報を組み合わせたものです。
std::uppercase
およびstd::hex
を使用してa
、16進形式で表示される整数変数をフォーマットします。
#include <iostream>
int main() {
int a = 255;
// Formatting Integer
std::cout << std::uppercase << std::hex << a << std::endl; // Output: FF
std::cout << std::showbase << std::hex << a << std::endl; // Output: 0XFF
std::cout << std::nouppercase << std::showbase << std::hex << a << std::endl; // Output: 0xff
return 0;
}
cout << hex << a << dec;
、元に戻すなどの変更が必要な場合があります。