C와 C++에서는 문자 값이 내부적으로 ASCII 코드 값으로 저장됩니다. 따라서 정수(int)를 ASCII 코드로 변환하는 것은 매우 간단한데, 바로 문자 '0'의 ASCII 값에 해당 정수를 더해주면 됩니다.
문자 '0'의 ASCII 값은 48입니다. 예를 들어 정수 5를 변환하면 48 + 5 = 53이 되고, 정수 8을 변환하면 48 + 8 = 56이 됩니다. 이 원리를 활용한 예제를 살펴보겠습니다.
예제 코드
#include<stdio.h>
int intToAscii(int number) {
return '0' + number;
}
main() {
printf("5의 ASCII 값은 %d\n", intToAscii(5));
printf("8의 ASCII 값은 %d\n", intToAscii(8));
}실행 결과
5의 ASCII 값은 53 8의 ASCII 값은 56
동작 원리
위 코드에서 intToAscii 함수는 문자 '0'(ASCII 값 48)에 입력받은 정수를 더한 값을 반환합니다. C 언어에서 문자 리터럴은 곧 정수 값으로 취급되기 때문에, 이러한 산술 연산이 가능합니다.
참고 사항
이 방식은 숫자 0~9 범위의 정수에만 유효합니다. 만약 변환된 값을 실제 문자로 출력하고 싶다면 %c 형식 지정자를 사용하면 됩니다. 또한 여러 자릿수의 정수 전체를 문자열로 변환하려면 sprintf() 함수나 표준 라이브러리의 itoa() 계열 함수를 사용하는 것이 좋습니다.