ASCII란 무엇인가?
ASCII(American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)는 총 128개의 문자로 구성된 문자 인코딩 체계로, 각 문자에는 0부터 127까지의 고유한 숫자 값이 할당되어 있습니다. 컴퓨터는 내부적으로 모든 문자를 이러한 숫자 값으로 처리하기 때문에, 프로그래밍에서 ASCII 값의 개념을 이해하는 것은 매우 중요합니다.
대표적인 문자들의 ASCII 값은 다음과 같습니다.
| 문자 | ASCII 값 |
|---|---|
| A | 65 |
| a | 97 |
| Z | 90 |
| z | 122 |
| $ | 36 |
| & | 38 |
| ? | 63 |
여기서 눈여겨볼 점은 대문자 'A'(65)와 소문자 'a'(97) 사이에 32만큼의 차이가 있다는 것입니다. 영문 알파벳은 대소문자 관계없이 연속된 숫자 값으로 배치되어 있어, 이 성질을 활용하면 대소문자 변환 같은 다양한 문자 처리 로직을 손쉽게 구현할 수 있습니다.
문자의 ASCII 값을 찾는 C++ 프로그램
C++에서는 char형 변수를 int형 변수에 대입하기만 하면 해당 문자의 ASCII 값을 손쉽게 얻을 수 있습니다. 아래는 여러 문자의 ASCII 값을 출력하는 전체 예제 프로그램입니다.
예제 코드
#include <iostream>
using namespace std;
void printASCII(char c) {
int i = c;
cout<<"The ASCII value of "<<c<<" is "<<i<<endl;
}
int main() {
printASCII('A');
printASCII('a');
printASCII('Z');
printASCII('z');
printASCII('$');
printASCII('&');
printASCII('?');
return 0;
}
실행 결과
The ASCII value of A is 65
The ASCII value of a is 97
The ASCII value of Z is 90
The ASCII value of z is 122
The ASCII value of $ is 36
The ASCII value of & is 38
The ASCII value of ? is 63
코드 동작 원리
위 프로그램에서 핵심 역할을 하는 것은 printASCII() 함수입니다. 이 함수는 매개변수로 전달받은 문자 c의 ASCII 값을 화면에 출력합니다.
함수 내부를 살펴보면, 먼저 int형 변수 i를 선언하고 여기에 문자 c의 값을 그대로 대입합니다. char형 데이터는 메모리상에서 실제로 정수(바이트 값)로 저장되기 때문에, int형 변수에 대입하는 순간 암시적 형 변환(implicit type conversion)이 일어나며 해당 문자의 ASCII 코드 값이 i에 저장됩니다. 이후 c와 i의 값을 함께 출력하여 어떤 문자가 어떤 숫자 값에 대응되는지 보여줍니다.
핵심 동작은 다음 코드 조각으로 확인할 수 있습니다.
void printASCII(char c) {
int i = c;
cout<<"The ASCII value of "<<c<<" is "<<i<<endl;
}추가 팁: static_cast를 활용한 명시적 변환
암시적 형 변환 외에도 C++ 스타일의 명시적 캐스팅인 static_cast를 사용하면 의도를 더 분명하게 드러낼 수 있습니다.
int ascii = static_cast<int>(c);
이 방식은 코드의 가독성과 안전성을 높여주므로, 실무에서는 암시적 변환보다 static_cast를 사용하는 것을 권장합니다. 또한 반대로 int형 값을 char형으로 변환하면 숫자에 해당하는 문자를 얻을 수 있으므로, 두 방향의 변환을 함께 익혀두면 문자 처리 프로그래밍에 큰 도움이 됩니다.