首頁 > 後端開發 > C++ > 主體

如何使用 Ostream 在 C 中將無符號字元列印為十六進位?

DDD
發布: 2024-11-10 15:38:02
原創
900 人瀏覽過

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

使用Ostream 在C 中將無符號字元列印為十六進位

使用ostream 以十六進位列印無符號8位元變數(unsigned char 或uint8_t)在 C中,請考慮以下解決方案:

使用十六進位操縱器進行轉換

在使用十六進位操縱器之前,您可以使用強制轉換將unsigned char 轉換為int:

cout << "a is " << hex << (int)a << "; b is " << hex << (int)b << endl;
登入後複製

使用自訂操縱器

MartinStettner 提供了一個名為 hexchar的優雅自訂操縱器,它可以簡化十六進位列印:

#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;
}
登入後複製

這將產生所需的輸出:

a is 00; b is ff
登入後複製

使用巨集(不太首選)

作為替代方案,您可以定義一個巨集來自動化這個過程,儘管這在以下情況下不太慣用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;
}
登入後複製

以上是如何使用 Ostream 在 C 中將無符號字元列印為十六進位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板