Heim > Artikel > Backend-Entwicklung > Wie drucke ich vorzeichenlose Zeichen als Hexadezimalzeichen in C mit ostream?
Vorzeichenlose Zeichen als Hexadezimal in C mit ostream drucken
In C werden vorzeichenlose 8-Bit-Variablen direkt mit ostream als Zeichen behandelt. Dies führt zu einer ungenauen hexadezimalen Darstellung. Um dies zu umgehen, stehen mehrere Methoden zur Verfügung:
Umwandeln in int
Ein gängiger Ansatz besteht darin, das vorzeichenlose Zeichen vor dem Drucken in eine Ganzzahl umzuwandeln. Dadurch wird ostream gezwungen, den Wert als Hexadezimalzahl zu behandeln. Zum Beispiel:
cout << "a is " << hex << (int) a << "; b is " << hex << (int) b << endl;
Hex-Manipulator mit int verwenden
Alternativ können Sie den Hex-Stream-Manipulator direkt mit einer Ganzzahl verwenden. Dadurch wird die Ganzzahl in eine hexadezimale Darstellung konvertiert und an den Stream angehängt. Zum Beispiel:
cout << "a is " << hex << int(a) << "; b is " << hex << int(b) << endl;
Hex-Manipulator mit setw und setfill verwenden
Wenn Sie führende Nullen zum Auffüllen benötigen, können Sie den Hex-Manipulator mit setw und setfill kombinieren Geben Sie die gewünschte Breite und das Füllzeichen an. Zum Beispiel:
#include <iomanip> ... cout << "a is " << setw(2) << setfill('0') << hex << int(a);
Erstellen eines Makros
Sie können den Druckvorgang vereinfachen, indem Sie ein Makro erstellen, das die notwendigen манипуляции kombiniert. Zum Beispiel:
#define HEX( x ) setw(2) << setfill('0') << hex << (int)( x )
Mit diesem Makro können Sie einfach schreiben:
cout << "a is " << HEX( a );
MartinStettners Lösung
Eine weitere elegante Lösung ist erstellen ein benutzerdefinierter Stream-Inserter für vorzeichenlose Zeichen, der diese automatisch als Hex ausgibt. Weitere Einzelheiten zum Ansatz von MartinStettner finden Sie in der Originalfrage und -antwort.
Das obige ist der detaillierte Inhalt vonWie drucke ich vorzeichenlose Zeichen als Hexadezimalzeichen in C mit ostream?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!