이번 튜토리얼에서는 ASCII 조회 테이블(Lookup Table)을 구현하는 C++ 프로그램을 다뤄보겠습니다.
ASCII 조회 테이블은 주어진 문자에 대한 8진수, 10진수, 16진수, HTML 값을 표 형태로 정리해 보여주는 자료입니다. 이를 활용하면 각 문자가 컴퓨터 내부에서 어떤 코드 값으로 저장되고 해석되는지 한눈에 파악할 수 있습니다.
조회 테이블에서 다루는 문자에는 알파벳 대소문자, 숫자, 공백 등의 구분자, 그리고 각종 특수 기호가 모두 포함됩니다.
C++ 구현 예제
아래 예제는 문자 하나를 입력받아 해당 ASCII 코드(10진수)를 구한 뒤, 이를 8진수·16진수·HTML 엔티티 형태로 변환해 화면에 출력합니다.
#include <iostream>
#include <string>
using namespace std;
// 10진수를 8진수로 변환
int Octal(int decimal){
int octal = 0;
string temp = "";
while (decimal > 0) {
int remainder = decimal % 8;
temp = to_string(remainder) + temp;
decimal /= 8;
}
for (int i = 0; i < temp.length(); i++)
octal = (octal * 10) + (temp[i] - '0');
return octal;
}
// 10진수를 16진수로 변환
string Hexadecimal(int decimal){
string hex = "";
while (decimal > 0) {
int remainder = decimal % 16;
if (remainder >= 0 && remainder <= 9)
hex = to_string(remainder) + hex;
else
hex = (char)('A' + remainder % 10) + hex;
decimal /= 16;
}
return hex;
}
// 10진수를 HTML 엔티티로 변환
string HTML(int decimal){
string html = to_string(decimal);
html = "&#" + html + ";";
return html;
}
// ASCII 조회 테이블 계산
void ASCIIlookuptable(char ch){
int decimal = ch;
cout << "8진수 값: " << Octal(decimal) << endl;
cout << "10진수 값: " << decimal << endl;
cout << "16진수 값: " << Hexadecimal(decimal) << endl;
cout << "HTML 값: " << HTML(decimal);
}
int main(){
char ch = 'a';
ASCIIlookuptable(ch);
return 0;
}
코드 동작 원리
- Octal() – 10진수 값을 8로 반복해서 나눈 나머지를 조합해 8진수를 만듭니다.
- Hexadecimal() – 10진수 값을 16으로 나눈 나머지를 이용하며, 10 이상의 나머지는 A~F 문자로 변환합니다.
- HTML() – 10진수 값을 &#코드; 형태의 HTML 엔티티로 감싸 반환합니다.
- ASCIIlookuptable() – 위 함수들을 호출해 문자의 모든 진법 표기를 한 번에 출력합니다.
실행 결과
8진수 값: 141 10진수 값: 97 16진수 값: 61 HTML 값: a
예제에서 사용한 문자 'a'의 ASCII 코드는 10진수로 97이며, 이는 8진수 141, 16진수 61, HTML 엔티티 a과 동일한 값을 나타냅니다.