Heim > Backend-Entwicklung > C++ > Hauptteil

Wie drucke ich vorzeichenloses Zeichen als Hex in C mit Ostream?

DDD
Freigeben: 2024-11-10 15:38:02
Original
900 Leute haben es durchsucht

How to Print Unsigned Char as Hex in C   Using Ostream?

Drucken von vorzeichenlosen Zeichen als Hex in C mit Ostream

So drucken Sie vorzeichenlose 8-Bit-Variablen (unsigned char oder uint8_t) in Hexadezimalform mit Ostream Betrachten Sie in C die folgenden Lösungen:

Verwenden von Casting mit Hex-Manipulator

Sie können einen Cast verwenden, um das vorzeichenlose Zeichen in einen Int umzuwandeln, bevor Sie den Hex-Manipulator verwenden:

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

Benutzerdefinierten Manipulator verwenden

MartinStettner hat einen eleganten benutzerdefinierten Manipulator namens Hexchar bereitgestellt, der Hex vereinfacht Drucken:

#include <iostream>
#include <iomanip>

namespace std
{
  template<>
  ostream& operator<<(ostream& os, unsigned char c)
  {
    return os << setbase(16) << setfill('0') << setw(2) << (unsigned int)c;
  }
}

using namespace std;

int main()
{
  unsigned char a = 0;
  unsigned char b = 0xff;
  cout << "a is " << hexchar << a << "; b is " << hexchar << b << endl;
  return 0;
}
Nach dem Login kopieren

Dadurch wird die gewünschte Ausgabe erzeugt:

a is 00; b is ff
Nach dem Login kopieren

Makro verwenden (weniger bevorzugt)

Alternativ können Sie kann ein Makro definieren, um den Prozess zu automatisieren, obwohl dies in C weniger idiomatisch ist:

#define HEX(x) \
  setw(2) << setfill('0') << hex << (unsigned int)(x)

int main()
{
  unsigned char a = 0;
  unsigned char b = 0xff;
  cout << "a is " << HEX(a) << "; b is " << HEX(b) << endl;
  return 0;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie drucke ich vorzeichenloses Zeichen als Hex 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage