ホームページ >バックエンド開発 >C++ >Ostreamを使用してCで符号なし文字を16進数として印刷する方法?

Ostreamを使用してCで符号なし文字を16進数として印刷する方法?

DDD
DDDオリジナル
2024-11-10 15:38:02946ブラウズ

How to Print Unsigned Char as Hex in C   Using Ostream?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。