Maison > développement back-end > C++ > Comment imprimer des caractères non signés au format Hex en C à l'aide d'Ostream ?

Comment imprimer des caractères non signés au format Hex en C à l'aide d'Ostream ?

DDD
Libérer: 2024-11-10 15:38:02
original
946 Les gens l'ont consulté

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

Impression de caractères non signés en hexadécimal en C à l'aide d'Ostream

Pour imprimer des variables non signées de 8 bits (unsigned char ou uint8_t) en hexadécimal à l'aide d'ostream en C , envisagez les solutions suivantes :

Utiliser Casting avec le manipulateur hexadécimal

Vous pouvez utiliser un cast pour convertir le caractère non signé en entier avant d'utiliser le manipulateur hexadécimal :

cout << "a is " << hex << (int)a << "; b is " << hex << (int)b << endl;
Copier après la connexion

Utilisation du manipulateur personnalisé

MartinStettner a fourni un élégant manipulateur personnalisé appelé hexchar qui simplifie l'hexagone impression :

#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;
}
Copier après la connexion

Cela produira le résultat souhaité :

a is 00; b is ff
Copier après la connexion

Utilisation d'une macro (moins préférée)

Comme alternative, vous peut définir une macro pour automatiser le processus, bien que ce soit moins idiomatique en C :

#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;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal