Maison > développement back-end > C++ > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-11 02:56:02
original
669 Les gens l'ont consulté

How to Print Unsigned Chars as Hexadecimal in C   Using ostream?

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

En C, l'impression de variables 8 bits non signées directement à l'aide de ostream les traite comme des caractères, ce qui entraîne une représentation hexadécimale inexacte. Pour surmonter ce problème, plusieurs méthodes sont disponibles :

Casting en int

Une approche courante consiste à convertir le caractère non signé en un entier avant l'impression. Cela oblige ostream à traiter la valeur comme un nombre hexadécimal. Par exemple :

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

Utilisation du manipulateur hexadécimal avec int

Vous pouvez également utiliser le manipulateur de flux hexadécimal directement avec un entier. Cela convertira l'entier en représentation hexadécimale et l'ajoutera au flux. Par exemple :

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

Utilisation du manipulateur hexadécimal avec setw et setfill

Si vous avez besoin de zéros non significatifs pour le remplissage, vous pouvez combiner le manipulateur hexadécimal avec setw et setfill pour spécifiez la largeur souhaitée et le caractère de remplissage. Par exemple :

#include <iomanip>
...
cout << "a is " << setw(2) << setfill('0') << hex << int(a);
Copier après la connexion

Création d'une macro

Vous pouvez simplifier le processus d'impression en créant une macro qui combine les manipulations nécessaires. Par exemple :

#define HEX( x )
   setw(2) << setfill('0') << hex << (int)( x )
Copier après la connexion

Avec cette macro, vous pouvez simplement écrire :

cout << "a is " << HEX( a );
Copier après la connexion

La solution de MartinStettner

Une autre solution élégante consiste à créer un outil d'insertion de flux personnalisé pour les caractères non signés qui les imprime automatiquement au format hexadécimal. Veuillez vous référer à la question et à la réponse originales pour plus de détails sur l'approche de MartinStettner.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal