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

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

DDD
DDDasal
2024-11-10 15:38:02904semak imbas

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;

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!

Kenyataan:
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