Heim > Backend-Entwicklung > C++ > Hauptteil

Wie drucke ich vorzeichenlose 8-Bit-Variablen korrekt in C?

DDD
Freigeben: 2024-11-11 01:13:03
Original
776 Leute haben es durchsucht

How to Print Unsigned 8-bit Variables Correctly in C  ?

Manipulation von vorzeichenlosen 8-Bit-Variablen in C

Beim Umgang mit vorzeichenlosen 8-Bit-Variablen in C kann es zu Herausforderungen kommen Drucken Sie sie korrekt mit ostream aus. Standardmäßig interpretiert ostream diese Variablen als char, was zu einer unbeabsichtigten Ausgabe führt.

Verstehen des Problems

Unsigned char und uint8_t sind beide Datentypen, die 8-Bit-Ganzzahlen ohne Vorzeichen darstellen . In C behandelt ostream diese Werte jedoch automatisch als Zeichen, was zu einer falschen Hex-Darstellung führt. Das folgende Code-Snippet veranschaulicht das Problem:

unsigned char a = 0;
unsigned char b = 0xff;
cout << "a is " << hex << a << "; b is " << hex << b << endl;
Nach dem Login kopieren

Die Ausgabe lautet:

a is ^@; b is 377
Nach dem Login kopieren

Anstelle der gewünschten Ausgabe:

a is 0; b is ff
Nach dem Login kopieren
Nach dem Login kopieren

Wird behoben das Problem

Um vorzeichenlose Char-Variablen korrekt als Hex auszugeben, müssen Sie sie explizit umwandeln in int umwandeln, bevor Sie sie drucken:

cout << "a is " << hex << (int) a << "; b is " << hex << (int) b << endl;
Nach dem Login kopieren

Dadurch wird die beabsichtigte Ausgabe erzeugt:

a is 0; b is ff
Nach dem Login kopieren
Nach dem Login kopieren

Wenn Sie in Ihrer Ausgabe eine Auffüllung mit führenden Nullen wünschen, können Sie den folgenden Code verwenden:

#include <iomanip>

//...

cout << "a is " << setw(2) << setfill('0') << hex << (int) a ;
Nach dem Login kopieren

Alternative Lösungen

Die Lösung von MartinStettner bietet eine alternative Methode dazu Beheben Sie das Problem:

std::cout << std::hex << static_cast<unsigned int>(a);
Nach dem Login kopieren

Diese Methode vermeidet die Notwendigkeit einer expliziten Umwandlung und bietet eine präzisere Lösung.

Das obige ist der detaillierte Inhalt vonWie drucke ich vorzeichenlose 8-Bit-Variablen korrekt in C?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage