Heim > Backend-Entwicklung > C++ > Wie kann ich mit printf Hexadezimalwerte einzelner Bytes genau drucken?

Wie kann ich mit printf Hexadezimalwerte einzelner Bytes genau drucken?

Linda Hamilton
Freigeben: 2024-12-16 18:08:13
Original
691 Leute haben es durchsucht

How Can I Accurately Print Hexadecimal Values of Single Bytes Using printf?

printf: Präzises Drucken von Hexadezimalwerten

Beim Arbeiten mit Vektoren von Zeichen kommt es häufig zu einer Diskrepanz beim Drucken einzelner Bytes im Hexadezimalformat Formatieren mit printf. Dieses Problem tritt auf, wenn versucht wird, ein einzelnes Zeichen zu drucken, das nur aus einem Byte besteht, aber stattdessen einen Multi-Byte-Wert erhält.

Der Grund für dieses Verhalten liegt in der Typübereinstimmung von printf. Der %x-Modifizierer erwartet einen vorzeichenlosen int-Parameter, und ein char wird normalerweise zu einem int heraufgestuft, wenn er an eine variable Argumentfunktion übergeben wird. Diese Aktion kann beim Drucken einzelner Zeichenwerte zu falschen Ergebnissen führen.

Um dieses Problem zu beheben, muss man das Zeichen explizit in ein vorzeichenloses Int umwandeln, um vorhersehbare Ergebnisse sicherzustellen. Der folgende Code gibt beispielsweise ein einzelnes Byte genau aus:

printf(" 0x%1x ", (unsigned)pixel_data[0]);
Nach dem Login kopieren

Es ist wichtig zu beachten, dass eine Feldbreite von eins in diesem Zusammenhang nicht besonders nützlich ist, da sie lediglich die Mindestanzahl von Ziffern angibt anzuzeigen. Wenn Sie jedoch Bytewerte als vorzeichenlose Werte behandeln und sie bei der Konvertierung in vorzeichenlose int-Werte auf Null erweitern möchten, können Sie unsigned char für den Vektor verwenden oder eine bestimmte Umwandlung durchführen:

printf(" 0x%x ", (unsigned)(unsigned char)pixel_data[0]);
Nach dem Login kopieren

Alternativ ist dies möglich Wenden Sie nach der Heraufstufung einen Maskierungsvorgang an, um das gleiche Ergebnis zu erzielen:

printf(" 0x%x ", (unsigned)pixel_data[0] & 0xffU);
Nach dem Login kopieren

Durch Befolgen dieser Techniken können Sie sicherstellen, dass printf genau druckt Hexadezimalwerte, auch wenn es sich um einzelne Bytes handelt.

Das obige ist der detaillierte Inhalt vonWie kann ich mit printf Hexadezimalwerte einzelner Bytes genau drucken?. 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