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
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é.