아스키 코드표 0부터 127까지, 제어 문자의 뜻과 한글에 아스키 코드가 없는 이유

29 10월, 2026 • 가이드 • 38 조회수 • 2 분 읽음

노트북 옆에 작은 기호가 칸칸이 인쇄된 참고표와 오래된 시리얼 케이블이 놓인 책상

아스키 코드표 0부터 127까지를 10진수와 16진수로 정리하고 NUL, LF, CR, ESC 같은 제어 문자의 뜻을 설명합니다. 한글 '가'를 변환하면 234, 176, 128이라는 세 개의 숫자가 나오는 이유도 함께 다룹니다.

아스키(ASCII) 코드표는 0부터 127까지 128개의 숫자에 영문 대소문자, 숫자, 기호, 제어 문자를 하나씩 짝지어 둔 표입니다. 0부터 31까지와 127은 일반 문자처럼 표시되지 않는 제어 문자이고, 32부터 126까지는 출력 가능 문자입니다. 이 가운데 32번은 글자 모양이 보이지 않는 공백입니다. 가장 많이 찾는 값은 대문자 A가 65, 소문자 a가 97, 숫자 0이 48입니다.

값이 128개뿐인 이유는 아스키가 7비트 코드이기 때문입니다. 2026년 10월 29일에 확인한 RFC 20(ASCII format for Network Interchange)은 7비트 아스키를 최상위 비트가 항상 0인 8비트 바이트에 담아 쓰도록 권하며, 이 코드를 USAS X3.4-1968에서 가져왔다고 밝힙니다. 유니코드의 첫 128개 값(0000부터 007F까지, Basic Latin 블록)도 아스키와 범위가 같습니다. 한글은 이 범위 밖에 있으므로 아스키 코드가 따로 없습니다.

아스키 제어 문자표 0부터 31까지와 127

아스키 제어 문자는 0부터 31까지의 32개이고, 127번 DEL도 보통 함께 묶어 33개로 봅니다. 글자로 찍히지 않고 통신 제어, 출력 위치 조정, 데이터 구분 등에 쓰입니다. 다만 RFC 20은 엄밀한 의미에서 DEL을 제어 문자로 보지 않는다고 적어 두었습니다. 이름은 RFC 20 4.1절의 약어를 그대로 따랐고, 아래에서 따로 설명하는 여섯 개는 굵게 표시했습니다.

10진수16진수약어이름과 뜻
00x00NULNull, 모든 비트가 0인 문자로 시간이나 매체를 채우는 데 쓸 수 있음
10x01SOHStart of Heading, 헤더 시작
20x02STXStart of Text, 본문 시작
30x03ETXEnd of Text, 본문 끝
40x04EOTEnd of Transmission, 전송 끝
50x05ENQEnquiry, 응답 요청
60x06ACKAcknowledge, 수신 확인
70x07BELBell, 경고음
80x08BSBackspace, 한 칸 뒤로
90x09HTHorizontal Tabulation, 가로 탭
100x0ALFLine Feed, 줄 바꿈
110x0BVTVertical Tabulation, 세로 탭
120x0CFFForm Feed, 다음 페이지로 넘김
130x0DCRCarriage Return, 줄 맨 앞으로 복귀
140x0ESOShift Out, 다른 문자 집합으로 전환
150x0FSIShift In, 원래 문자 집합으로 복귀
160x10DLEData Link Escape, 전송 제어 확장
170x11DC1Device Control 1, 장치 제어 1
180x12DC2Device Control 2, 장치 제어 2
190x13DC3Device Control 3, 장치 제어 3
200x14DC4Device Control 4, 장치 제어 4
210x15NAKNegative Acknowledge, 수신 실패 알림
220x16SYNSynchronous Idle, 동기 유지
230x17ETBEnd of Transmission Block, 전송 블록 끝
240x18CANCancel, 취소
250x19EMEnd of Medium, 매체 끝
260x1ASUBSubstitute, 잘못된 문자 대체
270x1BESCEscape, 뒤따르는 문자의 뜻을 바꾸는 확장 시작
280x1CFSFile Separator, 파일 구분
290x1DGSGroup Separator, 그룹 구분
300x1ERSRecord Separator, 레코드 구분
310x1FUSUnit Separator, 단위 구분
1270x7FDELDelete, 천공 테이프에서 잘못 찍힌 문자를 지우는 데 씀

실제로 자주 보는 제어 문자 6가지

표의 33개를 다 외울 필요는 없습니다. 개념을 이해하거나 텍스트와 통신 데이터를 살펴볼 때 알아 두면 좋은 여섯 가지는 아래와 같습니다.

  • NUL (0) RFC 20은 NUL을 모든 비트가 0인 문자로 설명하며, 시간이나 매체의 빈 곳을 채우는 데 쓸 수 있다고 적었습니다. 화면에 찍히는 숫자 '0'(48)과는 다른 문자입니다.
  • HT (9) 가로 탭 문자입니다. RFC 20은 출력 위치를 줄 위의 다음 탭 위치로 옮기는 문자로 설명합니다.
  • LF (10) 출력 위치를 다음 줄로 옮기는 줄 바꿈 문자입니다.
  • CR (13) 출력 위치를 같은 줄의 맨 앞으로 돌려보내는 문자입니다. 장비마다 기대하는 줄 끝 문자가 다를 수 있으니 장비 설명서를 확인하세요.
  • ESC (27) RFC 20은 ESC를 바로 뒤에 오는 몇 글자의 해석을 바꾸는 접두 문자로 설명합니다.
  • DEL (127) RFC 20에 따르면 천공 테이프에서 잘못되었거나 원치 않는 문자를 지우는 용도였습니다. 127은 7비트가 모두 1인 값이라 표의 맨 끝에 옵니다.

아스키 출력 가능 문자표 32부터 126까지

출력 가능 문자는 32번 공백부터 126번 물결표까지 95개입니다. 아래 표에서는 앞의 두 묶음을 32개씩, 마지막 묶음을 31개로 나란히 놓았습니다. 한 줄을 가로로 읽으면 값이 32씩 차이 나므로 대문자와 소문자가 같은 줄에 놓입니다. 16진수 값을 직접 계산해 보고 싶다면 16진수 변환기에 문자를 넣고 '16진수로'를 고르면 확인할 수 있습니다. 예를 들어 A를 넣으면 41이 나옵니다. 숫자 65를 넣으면 문자 '6'과 '5'의 값인 3635가 나오니, 숫자가 아니라 문자를 넣으세요.

10진수16진수문자10진수16진수문자10진수16진수문자
320x20(공백)640x40@960x60`
330x21!650x41A970x61a
340x22"660x42B980x62b
350x23#670x43C990x63c
360x24$680x44D1000x64d
370x25%690x45E1010x65e
380x26&700x46F1020x66f
390x27'710x47G1030x67g
400x28(720x48H1040x68h
410x29)730x49I1050x69i
420x2A*740x4AJ1060x6Aj
430x2B+750x4BK1070x6Bk
440x2C,760x4CL1080x6Cl
450x2D-770x4DM1090x6Dm
460x2E.780x4EN1100x6En
470x2F/790x4FO1110x6Fo
480x300800x50P1120x70p
490x311810x51Q1130x71q
500x322820x52R1140x72r
510x333830x53S1150x73s
520x344840x54T1160x74t
530x355850x55U1170x75u
540x366860x56V1180x76v
550x377870x57W1190x77w
560x388880x58X1200x78x
570x399890x59Y1210x79y
580x3A:900x5AZ1220x7Az
590x3B;910x5B[1230x7B{
600x3C<920x5C\1240x7C|
610x3D=930x5D]1250x7D}
620x3E>940x5E^1260x7E~
630x3F?950x5F_

큰따옴표는 34, 작은따옴표는 39입니다. 이 두 값은 뒤에서 변환기의 제한 사항을 설명할 때 다시 나옵니다.

아스키 코드를 쉽게 외우는 규칙

기준값 네 개만 기억하면 나머지는 대부분 계산으로 찾을 수 있습니다. 공백은 32, 숫자 0은 48, 대문자 A는 65, 소문자 a는 97입니다.

  • 숫자 0부터 9까지는 48부터 57까지입니다. 숫자 문자의 값에서 48을 빼면 실제 숫자가 됩니다. 예를 들어 문자 '7'은 55이고, 55에서 48을 빼면 7입니다.
  • 대문자 A부터 Z까지는 65부터 90까지, 소문자 a부터 z까지는 97부터 122까지입니다.
  • 같은 알파벳의 대문자와 소문자는 항상 32 차이가 납니다. A(65)에 32를 더하면 a(97)가 되고, c(99)에서 32를 빼면 C(67)가 됩니다.

차이가 늘 32인 데는 이유가 있습니다. 65를 2진수로 쓰면 1000001, 97은 1100001로 딱 한 비트만 다른데, 그 비트의 값이 32입니다. 직접 확인하려면 이진 변환기에 Aa를 넣고 '이진수로'를 골라 보세요. 1000001 1100001이 나옵니다. 이 도구도 숫자가 아니라 문자를 받으므로 65를 넣으면 다른 값이 나옵니다. 숫자 문자와 실제 숫자를 헷갈리는 것도 흔한 실수입니다. 문자 '0'은 48이고, 값 0은 제어 문자 NUL입니다.

줄 바꿈 코드 CR(13)과 LF(10)의 차이

CR(13)은 커서를 줄 맨 앞으로 돌려보내고, LF(10)는 커서를 한 줄 아래로 내립니다. 텍스트 파일의 줄 끝에는 흔히 두 가지 방식이 쓰입니다. Windows에서 만든 파일은 CR LF(13 10) 두 바이트를, Unix 계열과 macOS에서 만든 파일은 LF(10) 하나를 쓰는 경우가 많습니다. 다만 편집기 설정에 따라 달라질 수 있습니다. 파일을 바이트 단위로 열었을 때 줄마다 13 10이 보이면 CR LF 방식, 10만 보이면 LF 방식입니다. 시리얼 통신에서 명령이 동작하지 않는다면 장비가 기대하는 줄 끝 문자부터 확인하세요.

128부터 255까지가 아스키가 아닌 이유

아스키는 7비트라서 127에서 끝나며, 128부터 255까지는 아스키 표준에 들어 있지 않습니다. 이 구간의 바이트 값은 어떤 인코딩을 쓰느냐에 따라 해석이 달라지므로 하나로 정해진 표가 없습니다. 일부 8비트 코드 페이지에서는 값 하나가 문자 하나에 대응하지만, UTF-8에서는 여러 바이트가 모여 문자 하나를 나타냅니다. 이 내용은 아스키 변환기 페이지의 자주 묻는 질문에도 정리되어 있습니다.

아스키 변환기로 문자를 10진수로 바꾸는 방법

Digily Link의 아스키 변환기에 글자를 넣고 유형에서 'ASCII로'를 고른 뒤 제출을 누르면 공백으로 구분된 10진수가 나옵니다. Digily Link는 저희가 만드는 제품이며, 이 도구는 누구나 쓸 수 있습니다.

  1. 아스키 변환기 페이지를 엽니다.
  2. '콘텐츠' 칸에 바꿀 글자를 넣습니다. 숫자를 글자로 되돌릴 때는 숫자를 넣습니다.
  3. '유형'에서 글자를 숫자로 바꾸려면 'ASCII로', 숫자를 글자로 바꾸려면 '텍스트로'를 고릅니다.
  4. '제출'을 누릅니다.
  5. 결과 칸에서 값을 확인하고, 필요하면 '클립보드에 복사'를 누릅니다. 결과 칸 제목은 'ASCII로'일 때 '아스키', '텍스트로'일 때 '텍스트'입니다.

'ASCII로'는 입력을 바이트 단위로 하나씩 10진수로 바꾸고 숫자 사이에 공백을 한 칸씩 넣습니다. 영문과 숫자처럼 아스키 범위의 문자는 아스키 코드 값과 같지만, 한글은 UTF-8 바이트 값으로 나옵니다. 결과 맨 끝에도 공백이 한 칸 붙으니 다른 곳에 붙여 넣을 때 참고하세요. 영문과 숫자는 바이트 하나가 문자 하나이므로 코드표 값이 그대로 나옵니다. 아래 예시는 2026년 10월 29일에 변환기의 코드 처리 방식을 그대로 재현해 얻은 결과입니다. 실제 사이트에서 직접 실행한 결과는 아닙니다.

입력유형결과
HelloASCII로72 101 108 108 111
가ASCII로234 176 128
72 101 108 108 111텍스트로Hello
234 176 128텍스트로가
44032텍스트로값이 0인 NUL 문자 하나
65,66텍스트로결과 없음

한글에 아스키 코드가 없는 이유와 '가'가 234 176 128로 나오는 까닭

한글은 아스키 코드표에 없으므로 '가'에 해당하는 아스키 번호도 없습니다. 유니코드 블록 목록(Blocks.txt)을 보면 아스키와 같은 Basic Latin은 0000부터 007F까지, 한글 음절(Hangul Syllables) 블록은 AC00부터 D7AF까지로 두 범위가 겹치지 않습니다. 한글 음절 11,172자가 실제로 배정된 곳은 이 가운데 AC00부터 D7A3까지입니다.

그런데도 아스키 변환기에 '가'를 넣으면 234, 176, 128이라는 세 개의 숫자가 나옵니다. 변환기가 글자를 바이트 단위로 바꾸기 때문입니다. '가'를 UTF-8로 저장하면 3바이트가 되고, 세 숫자는 그 바이트를 각각 10진수로 적은 값입니다. 셋 다 127보다 크므로 아스키 값이 아닙니다. 이 세 바이트가 어떤 규칙으로 만들어지는지는 한글을 16진수로 변환하는 방법과 UTF-8 바이트 구조를 다룬 글에서 자세히 설명합니다.

다른 자료에서 '가'를 44032라는 숫자로 보았다면 헷갈릴 수 있습니다. 44032는 아스키 코드가 아니라 '가'의 유니코드 코드 포인트(16진수 AC00)이고, 234 176 128은 그 글자를 UTF-8로 저장한 바이트입니다.

반대로 '텍스트로'를 고르고 44032를 넣으면 '가'가 아니라 값이 0인 NUL 문자 하나가 만들어집니다. 화면에는 빈칸이나 깨진 기호로 보일 수 있습니다. 현재 Digily Link 변환기는 숫자 하나를 바이트 하나로 되돌리는데, 255보다 큰 수는 256으로 나눈 나머지만 남기기 때문입니다. 아스키 표준의 규칙이 아니라 이 도구의 처리 방식입니다. 44032는 256으로 나누어떨어지므로 나머지가 0이 되고, 0은 NUL입니다. '가'를 되돌리려면 234 176 128을 그대로 넣으세요.

아스키 변환기를 쓸 때 주의할 점

숫자는 공백 한 칸으로 구분하고, 따옴표나 < 기호가 들어간 글은 결과를 한 번 더 확인하세요. 아래 내용은 아스키 표준의 특성이 아니라 Digily Link 변환기의 현재 입력 처리 방식입니다.

  • 쉼표로는 구분되지 않습니다. 65,66처럼 쉼표로 이어 쓰면 숫자로 인식되지 않아 결과가 나오지 않습니다. 65 66처럼 공백 한 칸으로 띄우세요.
  • 따옴표 값이 그대로 나오지 않습니다. 작은따옴표와 큰따옴표는 변환 전에 HTML 문자 참조(&#39;, &#34;)로 바뀝니다. 그래서 it's를 'ASCII로' 바꾸면 105 116 39 115가 아니라 105 116 38 35 51 57 59 115가 나옵니다. 가운데의 38 35 51 57 59는 &#39; 다섯 글자의 값입니다. 따옴표의 실제 값은 위 표에서 34와 39를 확인하세요.
  • < 기호 뒤의 내용이 빠질 수 있습니다. <부터 다음 >까지, >가 없으면 입력 끝까지 지워집니다. 그래서 a<b를 넣으면 a만 남고, HTML 태그나 부등호가 들어간 코드는 결과가 짧아집니다.
  • 앞뒤 공백은 잘립니다. 입력이 공백으로 시작하거나 끝나면 그 자리의 32는 결과에 나오지 않습니다.

영문, 숫자, 기호의 값을 빠르게 확인하거나 과제에서 구한 숫자를 글자로 되돌려 보고 싶다면 아스키 변환기에서 문자를 10진수 코드로 바꿔 보세요.

자주 묻는 질문

한글은 아스키 코드로 몇 번인가요?

한글에는 아스키 번호가 없습니다. 변환기에서 '가'가 234 176 128로 나오는 것은 UTF-8 바이트 값이고, 44032는 유니코드 코드 포인트입니다.

아스키 코드 10과 13의 차이는 무엇인가요?

10은 LF로 커서를 한 줄 아래로 내리고, 13은 CR로 커서를 줄 맨 앞으로 돌려보냅니다. 줄 바꿈이 10 하나인지 13 10 두 개인지는 파일을 만든 환경과 편집기 설정에 따라 다릅니다.

NUL과 숫자 '0'은 같은 문자인가요?

다른 문자입니다. NUL은 값이 0인 보이지 않는 제어 문자이고, 화면에 찍히는 숫자 '0'은 48입니다.

0개 평가 중 0