Heim > Backend-Entwicklung > C++ > Wie drucke ich vorzeichenlose Zeichen als Hexadezimalzeichen in C mit ostream?

Wie drucke ich vorzeichenlose Zeichen als Hexadezimalzeichen in C mit ostream?

Mary-Kate Olsen
Freigeben: 2024-11-11 02:56:02
Original
702 Leute haben es durchsucht

How to Print Unsigned Chars as Hexadecimal in C   Using 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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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);
Nach dem Login kopieren

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 )
Nach dem Login kopieren

Mit diesem Makro können Sie einfach schreiben:

cout << "a is " << HEX( a );
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage