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
Mary-Kate Olsenoriginal
2024-11-21 11:05:16328parcourir

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;

Utilisez :

cout << "a is " << hex << (int) a << "; b is " << hex << (int) b << endl;

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;

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

#define HEX( x )
   setw(2) << setfill('0') << hex << (int)( x )

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

cout << "a is " << HEX( a );

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;

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!

Déclaration:
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