ASCII(미국 표준 코드)는 문자와 기호를 숫자로 표현하는 방식이다. 숫자 문자 '0'부터 '9'까지는 연속적인 ASCII 값을 가진다:
'0'의 ASCII 값은 48'1'의 ASCII 값은 49'2'의 ASCII 값은 50'9'의 ASCII 값은 57이 숫자 문자들은 모두 1씩 연속적으로 배치되어 있다. 따라서 '0'의 ASCII 값에 0부터 9까지의 숫자를 더하면 해당 숫자의 문자 표현을 얻을 수 있다.
+'0'정수형 숫자를 문자형 숫자로 변환할 때는 해당 숫자에 '0'의 ASCII 값을 더한다. 이 방식으로 숫자를 문자로 변환할 수 있다.
예를 들어:
int num = 5;
char ch = num + '0'; // ch는 문자 '5'가 된다.
num이 5일 경우, '0'의 ASCII 값인 48에 5를 더하면 53이 된다.
53은 문자 '5'의 ASCII 값이므로, ch에는 문자 '5'가 저장된다.
-'0'문자형 숫자를 정수형 숫자로 변환할 때는 문자에서 '0'의 ASCII 값을 빼면 된다.
예를 들어서는 아래와 같다.
char ch = '7';
int num = ch - '0'; // num은 7이 됩니다.
ch가 '7'일 경우, '7'의 ASCII 값인 55에서 '0'의 ASCII 값인 48을 빼면 7이 된다.num에는 정수 7이 저장된다.'A'의 ASCII 값은 65입니다. 'B'는 66, 'C'는 67, 등등이다.'!'의 ASCII 값은 33이다.
#include <unistd.h>
void ft_print_reverse_alphabet(void)
{
char alphabet;
alphabet = 97;
while (alphabet <= 122)
{
write(1, &alphabet, 1);
alphabet++;
}
}
#include <unistd.h>
void ft_print_alphabet(void)
{
char alphabet;
alphabet = 'a';
while (alphabet <= 'z')
{
write(1, &alphabet, 1);
alphabet++;
}
}
아스키 코드값으로 문자가 정렬되는 코드를 짜보았다. 위 코드를 비교하면 더욱 이해가 쉬울 것이다.
따옴표(')는 문자 CHAR,쌍 따옴표 (")는 문자열을 의미하기 때문에 'a'를 넣었다는 점을 생각한다면 아스키 코드 값을 통해서 숫자 -> 문자, 문자 -> 숫자로 바꾼다는 것에 대해 더 와닿을 수 있을 것이라고 생각한다.
'0'을 더하여 문자로 변환합니다.char ch = num + '0'; // num이 5이면, ch는 '5''0'을 빼서 정수로 변환합니다.int num = ch - '0'; // ch가 '7'이면, num은 7이 방법들을 활용하면 숫자와 문자를 쉽게 변환할 수 있습니다!