Maison > développement back-end > C++ > Comment imprimer des valeurs de caractères non signées au format hexadécimal en C à l'aide d'ostream ?

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

Mary-Kate Olsen
Libérer: 2024-11-21 11:05:16
original
296 Les gens l'ont consulté

How do I print unsigned char values as hexadecimal in C   using ostream?

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

En C, la gestion des variables 8 bits non signées peut être effectuée en utilisant soit un caractère non signé, soit uint8_t. Cependant, l'impression de ces variables directement à l'aide d'ostream les interprète comme des caractères, ce qui entraîne des résultats indésirables, comme observé lors du traitement de valeurs entières non signées.

Pour afficher avec précision un caractère non signé ou uint8_t sous forme de valeurs hexadécimales, vous devez les convertir en int avant de les transmettre à ostream. Par exemple, au lieu de :

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

Utilisez :

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

Cette approche garantit que les données sont traitées comme un entier, ce qui donne une représentation hexadécimale correcte.

Si vous souhaitez ajouter un remplissage avec des zéros non significatifs, vous pouvez inclure le fichier d'en-tête et utilisez la syntaxe suivante :

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

De plus, pour simplifier ce processus, vous pouvez créer une macro :

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

Cela vous permet d'imprimer des valeurs hexadécimales de manière concise en utilisant :

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

Cependant, il vaut la peine d'envisager une approche alternative suggérée par MartinStettner, qui consiste à utiliser le manipulateur std::hex, en créant le code plus lisible et éliminant le besoin de casting :

cout << "a is " << std::hex << a << "; b is " << std::hex << b << endl;
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
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