41.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로 넣어서 영문 알파벳이 모두 대문자로 표시되도록 만듭니다.