Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencetak Unsigned Char sebagai Hex dalam C Menggunakan Ostream?

Bagaimana untuk Mencetak Unsigned Char sebagai Hex dalam C Menggunakan Ostream?

DDD
Lepaskan: 2024-11-10 15:38:02
asal
992 orang telah melayarinya

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

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;
Salin selepas log masuk

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;
}
Salin selepas log masuk

Ini akan menghasilkan output yang dikehendaki:

a is 00; b is ff
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan