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 De plus, pour simplifier ce processus, vous pouvez créer une macro : Cela vous permet d'imprimer des valeurs hexadécimales de manière concise en utilisant : 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 : 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!cout << "a is " << setw(2) << setfill('0') << hex << (int) a;
#define HEX( x )
setw(2) << setfill('0') << hex << (int)( x )
cout << "a is " << HEX( a );
cout << "a is " << std::hex << a << "; b is " << std::hex << b << endl;