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;
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; }
Dadurch wird die gewünschte Ausgabe erzeugt:
a is 00; b is ff
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; }
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!