>  기사  >  백엔드 개발  >  Ostream을 사용하여 C에서 부호 없는 문자를 16진수로 인쇄하는 방법은 무엇입니까?

Ostream을 사용하여 C에서 부호 없는 문자를 16진수로 인쇄하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-10 15:38:02906검색

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

Ostream을 사용하여 C에서 부호 없는 Char를 16진수로 인쇄

ostream을 사용하여 부호 없는 8비트 변수(unsigned char 또는 uint8_t)를 16진수로 인쇄하려면 C에서는 다음 해결 방법을 고려하십시오.

16진수 조작기와 함께 형변환 사용

16진수 조작기를 사용하기 전에 형변환을 사용하여 부호 없는 문자를 int로 변환할 수 있습니다.

cout << "a is " << hex << (int)a << "; b is " << hex << (int)b << endl;

사용자 정의 조작기 사용

MartinStettner는 16진수 인쇄를 단순화하는 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

매크로 사용(덜 선호됨)

대안으로 매크로를 정의하여 프로세스를 자동화할 수 있지만, 이는 덜 관용적입니다. ㄷ :

#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에서 부호 없는 문자를 16진수로 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.