c언어 : ASCII 코드를 이용해 숫자를 문자로, 문자를 숫자로 전환하기

리로린·2024년 8월 14일
0

c 언어

목록 보기
3/10

ASCII 코드와 숫자 문자

ASCII(미국 표준 코드)는 문자와 기호를 숫자로 표현하는 방식이다. 숫자 문자 '0'부터 '9'까지는 연속적인 ASCII 값을 가진다:

  • '0'의 ASCII 값은 48
  • '1'의 ASCII 값은 49
  • '2'의 ASCII 값은 50
  • ...
  • '9'의 ASCII 값은 57

이 숫자 문자들은 모두 1씩 연속적으로 배치되어 있다. 따라서 '0'의 ASCII 값에 0부터 9까지의 숫자를 더하면 해당 숫자의 문자 표현을 얻을 수 있다.

1. 숫자를 문자로 변환하기: +'0'

정수형 숫자를 문자형 숫자로 변환할 때는 해당 숫자에 '0'의 ASCII 값을 더한다. 이 방식으로 숫자를 문자로 변환할 수 있다.

예를 들어:

int num = 5;
char ch = num + '0';  // ch는 문자 '5'가 된다.

num이 5일 경우, '0'의 ASCII 값인 48에 5를 더하면 53이 된다.
53은 문자 '5'의 ASCII 값이므로, ch에는 문자 '5'가 저장된다.

2. 문자를 숫자로 변환하기: -'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 값을 통해 변환할 수 있다. 예를 들어, '!'의 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++;
	}
}

아스키 코드값으로 문자가 정렬되는 코드를 짜보았다. 위 코드를 비교하면 더욱 이해가 쉬울 것이다.

  • 홑따옴표('): 문자 리터럴을 정의할 때 사용된다. 예를 들어, 'a'는 문자 a를 나타냅니다. 이 문자 리터럴은 char 타입이다.
  • 쌍따옴표("): 문자열 리터럴을 정의할 때 사용됩니다. 예를 들어, "a"는 문자열 "a"를 나타내며, 이 문자열은 char 배열로 저장된다. 문자열 리터럴은 null 종료('\0')로 끝나는 char 배열이다.

따옴표(')는 문자 CHAR,쌍 따옴표 (")는 문자열을 의미하기 때문에 'a'를 넣었다는 점을 생각한다면 아스키 코드 값을 통해서 숫자 -> 문자, 문자 -> 숫자로 바꾼다는 것에 대해 더 와닿을 수 있을 것이라고 생각한다.

정리

  • 숫자 → 문자: 숫자에 '0'을 더하여 문자로 변환합니다.
    char ch = num + '0';  // num이 5이면, ch는 '5'
  • 문자 → 숫자: 문자에서 '0'을 빼서 정수로 변환합니다.
    int num = ch - '0';  // ch가 '7'이면, num은 7

이 방법들을 활용하면 숫자와 문자를 쉽게 변환할 수 있습니다!

profile
리로린의 블로그

0개의 댓글