Frage
Ich versuche, den Hex-Wert eines Zeichens ausgeben und formatieren Sie es auf eine nette Art.
Erforderlich: 0x01 : value 0x1
Alles, was ich bekommen kann, ist: 00x1 : value 0x1
// oder 0x1, wenn ich verwende iomanip nicht
Hier ist der Code ich habe, ‚ch‘ erklärt wurde, ein unsigned char zu sein. Gibt es eine andere Art und Weise es außer Kontrolle um den Wert zu tun und manuell eine ‚0‘ ??
hinzufügencout << showbase;
cout << hex << setw(2) << setfill('0') << (int) ch;
Edit:
Ich fand eine Lösung online:
cout << internal << setw(4) << setfill('0') << hex << (int) ch
Lösung
std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch;
Da setw
Pads aus nach links von der gesamten gedruckten Nummer (nach showbase
angewandt wird), showbase
nicht verwendbar in Ihrem Fall ist. Stattdessen manuell aus der Basis drucken, wie oben gezeigt.
Andere Tipps
In einem an meinen Projekten ich dies tat:
ostream &operator<<(ostream &stream, byte value)
{
stream << "0x" << hex << (int)value;
return stream;
}
I surchaged den Operator << für die Stream-Ausgabe, und alles, was ein Byte war, in hexadezimal dargestellt. Byte ist ein typedef für unsigned char.