J'essaie de convertir un court non signé en sa représentation hexadécimale en majuscules et préfixé de 0 en utilisant stringstream. Je n'arrive pas à obtenir les majuscules et les 0 corrects. voici ce que j'ai maintenant:
USHORT id = 1127;
std::stringstream ss;
ss << std::showbase << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << id;
std::string result = ss.str();
il en résulte que la base "0x" préfixée est également en majuscule mais je veux que ce soit en minuscule. il en résulte également aucun 0 préfixé à la valeur hexadécimale après la base 0x préfixée (actuellement 0X). par exemple, cela produira désormais 0X467 au lieu du 0x0467 attendu. Comment puis-je réparer ça?
setw
va définir la largeur de l'ensemble de la sortie formatée, y compris la base affichée, c'est pourquoi vous ne voyez pas le premier 0
. De plus, il n'y a aucun moyen d'afficher la base en minuscules si vous utilisez std::showbase
de même que std::uppercase
. La solution consiste à insérer la base manuellement, puis à appliquer les manipulateurs restants.
ss << "0x" << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << id;
Cela génère 0x0467