2009-10-25 13 views
9

私はcharの16進値を出力し、それを良い方法でフォーマットしようとしています。C++ 16進数形式

必須:0x01 : value 0x1

私が得ることができるすべてがある:00x1 : value 0x1 //または0x1の私は

をiomanip使用しない場合はここで私が持っているコードだが、 'CHは' unsigned char型として宣言されました。値をチェックし、手動で '0'を追加する以外の方法はありますか?

cout << showbase; 
cout << hex << setw(2) << setfill('0') << (int) ch; 

編集:

私は1つのソリューションオンラインが見つかりました:全体的に印刷された数(showbaseが適用された後)の左側に出setwパッド、showbase ISN以来

cout << internal << setw(4) << setfill('0') << hex << (int) ch 

答えて

13
std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch; 

あなたの場合には使えません。代わりに、上記のようにベースを手動で印刷します。私はこれをしなかった私のプロジェクトの1で

0

ostream &operator<<(ostream &stream, byte value) 
{ 
    stream << "0x" << hex << (int)value; 
    return stream; 
} 

私はストリーム出力のための演算子< <をsurchaged、バイトは16進数で示されたものでした。 byteはunsigned charのtypedefです。

関連する問題