Question

J'essaie de sortir la valeur hexadécimale d'un caractère et de la formater de manière agréable.

Obligatoire: 0x01 : value 0x1

Tout ce que je peux obtenir est: 00x1 : value 0x1 // ou 0x1 si je n’utilise pas iomanip

Voici le code que j'ai, 'ch' a été déclaré être un caractère non signé. Existe-t-il un autre moyen de le faire que de vérifier la valeur et d’ajouter manuellement un '0' ??

cout << showbase;
cout << hex << setw(2) << setfill('0') << (int) ch;

Modifier:

J'ai trouvé une solution en ligne:

cout << internal << setw(4) << setfill('0') << hex << (int) ch
Était-ce utile?

La solution

std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch;

Etant donné que setw se situe à gauche du nombre total imprimé (après l'application de showbase), <=> n'est pas utilisable dans votre cas. Imprimez manuellement la base comme indiqué ci-dessus.

Autres conseils

Dans l'un de mes projets, j'ai fait ceci:

ostream &operator<<(ostream &stream, byte value)
{
     stream << "0x" << hex << (int)value;
     return stream;
}

J'ai écrasé l'opérateur < < pour la sortie de flux, et tout ce qui était un octet a été affiché en hexadécimal. octet est un typedef pour un caractère non signé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top