ASCII 코드표·제어 문자
ASCII 0~127 의 10진·HEX·2진 값과 글자, STX·ETX·ACK·NAK·ENQ·CR·LF·XON·XOFF 같은 제어 문자의 이름과 캐럿·이스케이프 표기를 한 표로. 시리얼 통신 프레임 읽기용.
시리얼 통신에서 자주 보는 제어 문자
| HEX | 약어 | 흔한 쓰임 |
|---|---|---|
| 02 · 03 | STX · ETX | 프레임의 시작·끝 표시. 장비 고유 프로토콜이 «STX 본문 ETX 체크섬» 꼴로 많이 씁니다(체크섬이 STX 를 포함하는지는 매뉴얼마다 다름). |
| 05 | ENQ | «응답해 달라» 는 요청 바이트로 쓰는 프로토콜이 있습니다. |
| 06 · 15 | ACK · NAK | 받았음·못 받았음(다시 보내 달라) 응답. |
| 0D · 0A | CR · LF | 줄 끝. 장비마다 CR 만, LF 만, CR LF 를 다르게 기대합니다 — 명령이 안 먹으면 줄 끝부터 맞춥니다. |
| 11 · 13 | DC1 · DC3 | 소프트웨어 흐름 제어 XON(다시 보내)·XOFF(멈춰). 이 방식을 쓰면 데이터에 11·13 이 그대로 들어가면 안 됩니다. |
| 1B | ESC | 터미널 제어 시퀀스(ESC [ …)의 시작. |
| 00 | NUL | 빈 바이트. 문자열 끝 표시로 쓰는 장비도 있습니다. |
128~255 와 한글
- ASCII 는 7비트(0~127)까지입니다. 128~255 는 코드 페이지(ISO 8859-1, CP949 등)마다 다른 글자라 이 표에 넣지 않았습니다.
- 한글은 한 글자가 여러 바이트입니다 — UTF-8 은 3바이트, CP949(EUC-KR 확장)는 2바이트. 같은 한글이 장비와 PC 에서 깨져 보이면 인코딩이 다른 것입니다.
- 캐럿 표기 ^M 은 Ctrl+M 과 같은 코드(0x0D)이고, 이스케이프 \r 은 C 같은 언어의 문자열 표기입니다.
자주 묻는 것
CR 과 LF 는 몇 번인가요?
CR(캐리지 리턴)은 13(0x0D), LF(줄 바꿈)는 10(0x0A)입니다. 윈도우 텍스트 파일의 줄 끝은 CR LF(0D 0A) 두 바이트입니다.
숫자 '0' 과 값 0 은 다른가요?
다릅니다. 글자 '0' 은 48(0x30), 값 0 은 NUL(0x00)입니다. 장비가 숫자를 ASCII 로 보내면 '1' '2' '3' 은 31 32 33 으로 옵니다.
대문자와 소문자는 얼마나 차이 나나요?
32(0x20)입니다. 'A' 는 65(0x41), 'a' 는 97(0x61) 로 비트 하나(0x20)만 다릅니다.
DEL(0x7F)도 제어 문자인가요?
RFC 20 은 DEL 을 제어 문자 목록에 두면서 «엄밀히는 제어 문자가 아니다» 라고 주를 답니다. 이 표에서는 제어 문자로 함께 표시합니다.
바이트를 글자로 바꾸거나 글자를 바이트로 바꾸려면 HEX ↔ ASCII 변환기.