ASCII 코드 조회 쉽게 이해하기 — 개념과 원리
ASCII(미국 정보 교환 표준 부호)는 영문자, 숫자, 문장 부호, 제어 신호에 0부터 127까지의 번호를 붙인 문자 집합입니다. UTF-8을 비롯한 거의 모든 현대 문자 인코딩이 이 128개를 그대로 공유하므로, ASCII 값을 알면 16진수 덤프를 읽거나 이스케이프 문자를 쓰고, 통신 규약을 해석하고, 보이지 않는 문자를 찾을 때 큰 도움이 됩니다. 10진수 코드를 넣으면 문자와 16진수·8진수·2진수 표현을 보여 줍니다.
계산 방법
- 문자: 32~126은 출력 가능한 문자로 그대로 보여 줍니다. 0~31과 127은 제어 문자이므로 NUL, LF, CR, ESC, DEL 같은 표준 약어로 표시합니다.
- 16진수: 0x를 붙이고 두 자리로 맞춘 16진 표기입니다.
- 8진수: 8진법으로 쓴 값입니다.
- 2진수: 8비트로 맞춘 2진 표기입니다. ASCII는 7비트면 충분하므로 맨 앞 비트는 늘 0입니다.
원리
ASCII는 간단한 비트 연산이 쓸모 있도록 배치되어 있습니다. 대문자는 65(0x41), 소문자는 97(0x61)부터 시작해 두 값은 5번 비트(값 32) 하나만 다르므로 이 비트를 뒤집으면 대소문자가 바뀝니다. 숫자 0~9는 48~57(0x30~0x39)에 있어 48을 빼면 실제 숫자 값이 됩니다. 앞의 32자리는 제어 문자로, 예전 텔레프린터가 상위 비트만 보고 명령을 구분할 수 있게 한 배치입니다. 진법 변환은 같은 수를 16개, 8개, 2개의 기호로 다시 적는 일일 뿐입니다.
예제 풀이
- 입력은 10진수 65입니다.
- 65는 출력 가능 범위 32~126에 들어가므로 문자는 A입니다.
- 65 = 4 × 16 + 1이므로 16진수는 0x41입니다.
- 65 = 1 × 64 + 0 × 8 + 1이므로 8진수는 101입니다.
- 65 = 64 + 1이므로 2진수 1000001이고, 8비트로 맞추면 01000001입니다.
결과 해석
기억해 두면 좋은 값은 0 = NUL(C 문자열의 끝), 9 = 탭, 10 = LF(유닉스 줄바꿈), 13 = CR(윈도는 CR LF), 27 = ESC(터미널 제어 시작), 32 = 공백, 48 = '0', 65 = 'A', 97 = 'a', 127 = DEL입니다. 파일에 0x0D가 섞여 있다면 윈도 줄바꿈으로 저장되었을 가능성이 큽니다.
흔한 실수
- 숫자 문자 '7'(코드 55)과 수 7을 혼동하는 것
- 128~255를 'ASCII 확장'이라 부르는 것(이 영역은 ISO 8859-1 등 별도 코드 페이지에 속합니다)
- 8진수 101을 10진수 백일로 읽는 것
자주 묻는 질문
공백의 ASCII 코드는 무엇입니까?
32(0x20)입니다. 웹 문서의 줄바꿈 없는 공백은 U+00A0으로 다른 문자입니다.
ASCII 코드로 소문자를 대문자로 바꾸려면 어떻게 합니까?
97~122 사이의 코드에서 32를 빼면 됩니다. 97('a') − 32 = 65('A')입니다.
ASCII와 UTF-8은 같습니까?
0~127 범위에서는 바이트가 똑같아서 ASCII 파일은 그대로 올바른 UTF-8 파일입니다.
출처: ANSI X3.4-1986, American National Standard Code for Information Interchange (ASCII) · IETF RFC 20, ASCII format for Network Interchange (V. Cerf, 1969)