Ostream を使用して C で符号なし Char を 16 進数で出力する
ostream を使用して符号なし 8 ビット変数 (unsigned char または uint8_t) を 16 進数で出力するにはC では、次の解決策を検討してください。
16 進数マニピュレータでのキャストの使用
16 進数マニピュレータを使用する前に、キャストを使用して unsigned char を int に変換できます。
cout << "a is " << hex << (int)a << "; b is " << hex << (int)b << endl;
カスタム マニピュレータの使用
MartinStettner は、16 進数の印刷を簡素化する hexchar と呼ばれるエレガントなカスタム マニピュレータを提供しました。
#include <iostream> #include <iomanip> namespace std { template<> ostream& operator<<(ostream& os, unsigned char c) { return os << setbase(16) << setfill('0') << setw(2) << (unsigned int)c; } } using namespace std; int main() { unsigned char a = 0; unsigned char b = 0xff; cout << "a is " << hexchar << a << "; b is " << hexchar << b << endl; return 0; }
これにより、望ましい出力:
a is 00; b is ff
マクロの使用 (あまり推奨されません)
代わりに、マクロを定義してプロセスを自動化することもできますが、これはあまり慣用的ではありません。子:
#define HEX(x) \ setw(2) << setfill('0') << hex << (unsigned int)(x) int main() { unsigned char a = 0; unsigned char b = 0xff; cout << "a is " << HEX(a) << "; b is " << HEX(b) << endl; return 0; }
以上がOstreamを使用してCで符号なし文字を16進数として印刷する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。