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ügen
cout << 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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top