TL;DR
- ASCII는 7비트 이진 코드를 사용하는 문자 인코딩 표준으로, 총 128개의 문자를 정의한다.
- 제어 문자(33개)와 출력 가능 문자(95개)로 구성되며, 현대 가변 길이 인코딩(UTF-8 등)의 근간이 된다.
- 0~127 범위의 코드 포인트는 UTF-8과 바이트 단위에서 1:1로 호환된다.
ASCII (American Standard Code for Information Interchange)
ASCII는 컴퓨터 및 통신 장비에서 문자를 숫자로 표현하기 위해 설계된 7비트 문자 인코딩 체계다. 개의 고유한 값을 가지며, 메모리 효율을 위해 실제로는 1바이트(8비트)의 최상위 비트(MSB)를 0으로 비워두고 나머지 7비트에 데이터를 할당하는 방식으로 처리된다.
1. 제어 문자 (Control Characters, 0~31 및 127)
화면에 출력되지 않으며, 장치 제어 및 데이터 전송 흐름 관리를 목적으로 사용된다.
| 10진 | 16진 | 약자 | 의미 | 비고 |
|---|---|---|---|---|
| 0 | 00 | NUL | Null | 문자열 종료 (C언어) |
| 7 | 07 | BEL | Bell | 경고음 발생 |
| 9 | 09 | HT | Horizontal Tab | 수평 탭 (\t) |
| 10 | 0A | LF | Line Feed | 줄 바꿈 (\n) |
| 13 | 0D | CR | Carriage Return | 커서 복귀 (\r) |
| 27 | 1B | ESC | Escape | 제어 시퀀스 시작 |
| 127 | 7F | DEL | Delete | 문자 삭제 |
현대적 활용
- 줄바꿈: Unix/Linux 계열은
LF, Windows 계열은CRLF를 사용하여 개행을 처리한다.- 스트리밍: NDJSON (Newline Delimited JSON)이나 SSE (Server-Sent Events) 등은
LF(10)를 메시지 구분자로 활용한다.
2. 출력 가능 문자 (Printable Characters, 32~126)
사용자가 직접 읽을 수 있는 공백, 숫자, 영문자 및 기호들이다.
| 범위 | 개수 | 구성 내용 |
|---|---|---|
| 32 | 1 | 공백 (Space) |
| 33~47, 58~64, 91~96, 123~126 | 33 | 특수 기호 (!, @, # 등) |
| 48~57 | 10 | 아라비아 숫자 (0~9) |
| 65~90 | 26 | 영문 대문자 (A~Z) |
| 97~122 | 26 | 영문 소문자 (a~z) |
3. 확장 ASCII와 호환성
확장 ASCII (Extended ASCII)
표준 7비트 ASCII의 한계를 보완하기 위해 8비트 코드 페이지들이 등장했다. ISO-8859(Latin-1) 계열처럼 128~255 영역에 지역 문자를 배치한 단일 바이트 인코딩도 있고, CP949처럼 ASCII 영역은 유지하되 한글 표현을 위해 멀티바이트 구조를 사용하는 인코딩도 있다.
UTF-8과의 관계
- 완전한 하위 호환: UTF-8의 1바이트 영역(U+0000~U+007F)은 ASCII와 바이트 값이 동일하다.
- 표준화: ASCII 기반의 데이터 포맷(JSON, XML, HTTP 헤더 등)은 별도의 변환 없이 UTF-8 환경에서 그대로 유효하다.
Connections
- UTF-8 — 1바이트 영역(0~127)을 공유하는 하위 호환 관계
- Base64 인코딩 — ASCII 문자 중 64개를 선별하여 바이너리 데이터를 안전하게 텍스트화하는 기법
- [[Hexadecimal (16진수)]] — ASCII 매핑 테이블의 값을 직관적으로 표현하는 수 체계


Discussion
Comments
댓글은 승인 후 공개됩니다.