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

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

DDD
リリース: 2024-11-10 15:38:02
オリジナル
975 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート