Heim  >  Artikel  >  Backend-Entwicklung  >  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
Mary-Kate OlsenOriginal
2024-11-11 02:56:02670Durchsuche

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;

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!

Stellungnahme:
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