46.8 연습문제: 문자열을 16진 정수로 변환하기

다음 소스 코드를 완성하여 16진 정수 0x1FACEFEE가 출력되게 만드세요.

practice_string_to_hex_string.c

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *s1 = "0x1facefee";
    int num1;

    ______________________________

    printf(_________, num1);

    return 0;
}

실행 결과

0x1FACEFEE

정답

 num1 = strtol(s1, NULL, 16);
 "0x%X\n"

해설

16진법으로 표기된 문자열을 정수로 변환하려면 strtol 함수를 사용합니다. 여기서 문자열 안에 들어있는 정수가 하나밖에 없으므로 strtol(s1, NULL, 16);와 같이 두 번재 인수(끝 포인터)에는 NULL을 넣어줍니다. 그리고 16진수이므로 진법은 16을 지정합니다.

문자열은 "0x1facefee"와 같이 영문 알파벳 부분이 소문자인데 출력 결과는 모두 대문자입니다. 따라서 printf 함수로 출력할 때 "0x%X\n"와 같이 서식 지정자를 %X로 넣어서 영문 알파벳이 모두 대문자로 표시되도록 만듭니다.