Mencetak Unsigned Char sebagai Hex dalam C Menggunakan Ostream
Untuk mencetak pembolehubah 8-bit yang tidak ditandatangani (unsigned char atau uint8_t) dalam heksadesimal menggunakan ostream dalam C , pertimbangkan penyelesaian berikut:
Menggunakan Casting dengan Manipulator Hex
Anda boleh menggunakan cast untuk menukar aksara yang tidak ditandatangani kepada int sebelum menggunakan manipulator hex:
cout << "a is " << hex << (int)a << "; b is " << hex << (int)b << endl;
Menggunakan Manipulator Tersuai
MartinStettner menyediakan manipulator tersuai elegan dipanggil hexchar yang memudahkan pencetakan hex:
#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; }
Ini akan menghasilkan output yang dikehendaki:
a is 00; b is ff
Menggunakan Makro (Kurang Diutamakan)
Sebagai alternatif, anda boleh menentukan makro untuk mengautomasikan proses, walaupun ini kurang idiomatik dalam C :
#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; }
Atas ialah kandungan terperinci Bagaimana untuk Mencetak Unsigned Char sebagai Hex dalam C Menggunakan Ostream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!