인수가 부호없는 문자임을 hh
알리는 데 사용할 수 있습니다 printf
. 사용은 0
제로 패딩을 얻을 수 및 2
2로 폭을 설정 x
또는 X
이하 / 대문자 진수 문자.
uint8_t a = 0x0a;
printf("%02hhX", a); // Prints "0A"
printf("0x%02hhx", a); // Prints "0x0a"
편집 : 독자가 이것이 '올바른'형식 지정자가 아니라는 2501의 주장에 대해 우려한다면 printf
링크를 다시 읽으라고 제안 합니다. 구체적으로 특별히:
% c가 int 인수를 예상하더라도 가변 함수가 호출 될 때 발생하는 정수 승격 때문에 char를 전달하는 것이 안전합니다.
고정 너비 문자 유형 (int8_t 등)에 대한 올바른 변환 사양은 헤더 <cinttypes>
(C ++) 또는 <inttypes.h>
(C)에 정의되어 있습니다 (PRIdMAX, PRIuMAX 등은 % jd, % ju 등과 동의어 임) .
부호있는 대 부호없는 것에 대한 그의 요점은이 경우 값이 항상 양수 여야하고 부호있는 정수에 쉽게 맞아야하므로 중요하지 않습니다. 어쨌든 서명 된 16 진수 형식 지정자는 없습니다.
편집 2 : ( "당신이 틀 렸음을 인정할 때"판) :
311 페이지 (PDF 329) 에서 실제 C11 표준 을 읽으면 다음 을 찾을 수 있습니다.
HH : 지정하는 다음가 d
, i
, o
, u
, x
, 또는 X
변환 지시자는 적용 signed char
또는 unsigned char
인수 (인수는 정수 프로모션에 따른 증진 된 것이지만, 그 값으로 변환한다 signed char
또는 unsigned char
인쇄하기 전에); 또는 다음 n
변환 지정자가 signed char
인수 에 대한 포인터에 적용됩니다 .
"\xc0\xc0abc123"