ASCII 표
ASCII 표 (ASCII Chart)
문자가 메모리에서 어떤 숫자로 표현되는지 궁금할 때 정답지가 되는 게 ASCII 표예요. 이 페이지는 ASCII 코드 0부터 127까지를 십진수(dec), 팔진수(oct), 십육진수(hex), 문자(ch) 네 가지로 정리한 표와, 그걸 출력하는 예시 코드를 담고 있어요.
출처: cppreference
본문
아래 표는 128개의 ASCII 코드 전부를 십진수(dec), 팔진수(oct), 십육진수(hex), 문자(ch)로 보여줘요.
참고: 유니코드에서 ASCII 문자 블록은 U+0000..U+007F Basic Latin이라고 불러요.
ASCII 코드 표
0–31 (제어 문자)
| dec | oct | hex | ch |
|---|---|---|---|
| 0 | 0 | 00 | NUL (null) |
| 1 | 1 | 01 | SOH (start of header) |
| 2 | 2 | 02 | STX (start of text) |
| 3 | 3 | 03 | ETX (end of text) |
| 4 | 4 | 04 | EOT (end of transmission) |
| 5 | 5 | 05 | ENQ (enquiry) |
| 6 | 6 | 06 | ACK (acknowledge) |
| 7 | 7 | 07 | BEL (bell) |
| 8 | 10 | 08 | BS (backspace) |
| 9 | 11 | 09 | HT (horizontal tab) |
| 10 | 12 | 0a | LF (line feed - new line) |
| 11 | 13 | 0b | VT (vertical tab) |
| 12 | 14 | 0c | FF (form feed - new page) |
| 13 | 15 | 0d | CR (carriage return) |
| 14 | 16 | 0e | SO (shift out) |
| 15 | 17 | 0f | SI (shift in) |
| 16 | 20 | 10 | DLE (data link escape) |
| 17 | 21 | 11 | DC1 (device control 1) |
| 18 | 22 | 12 | DC2 (device control 2) |
| 19 | 23 | 13 | DC3 (device control 3) |
| 20 | 24 | 14 | DC4 (device control 4) |
| 21 | 25 | 15 | NAK (negative acknowledge) |
| 22 | 26 | 16 | SYN (synchronous idle) |
| 23 | 27 | 17 | ETB (end of transmission block) |
| 24 | 30 | 18 | CAN (cancel) |
| 25 | 31 | 19 | EM (end of medium) |
| 26 | 32 | 1a | SUB (substitute) |
| 27 | 33 | 1b | ESC (escape) |
| 28 | 34 | 1c | FS (file separator) |
| 29 | 35 | 1d | GS (group separator) |
| 30 | 36 | 1e | RS (record separator) |
| 31 | 37 | 1f | US (unit separator) |
32–63 (문장 부호와 숫자)
| dec | oct | hex | ch |
|---|---|---|---|
| 32 | 40 | 20 | (space) |
| 33 | 41 | 21 | ! |
| 34 | 42 | 22 | " |
| 35 | 43 | 23 | # |
| 36 | 44 | 24 | $ |
| 37 | 45 | 25 | % |
| 38 | 46 | 26 | & |
| 39 | 47 | 27 | ' |
| 40 | 50 | 28 | ( |
| 41 | 51 | 29 | ) |
| 42 | 52 | 2a | * |
| 43 | 53 | 2b | + |
| 44 | 54 | 2c | , |
| 45 | 55 | 2d | - |
| 46 | 56 | 2e | . |
| 47 | 57 | 2f | / |
| 48 | 60 | 30 | 0 |
| 49 | 61 | 31 | 1 |
| 50 | 62 | 32 | 2 |
| 51 | 63 | 33 | 3 |
| 52 | 64 | 34 | 4 |
| 53 | 65 | 35 | 5 |
| 54 | 66 | 36 | 6 |
| 55 | 67 | 37 | 7 |
| 56 | 70 | 38 | 8 |
| 57 | 71 | 39 | 9 |
| 58 | 72 | 3a | : |
| 59 | 73 | 3b | ; |
| 60 | 74 | 3c | < |
| 61 | 75 | 3d | = |
| 62 | 76 | 3e | > |
| 63 | 77 | 3f | ? |
64–95 (대문자와 기호)
| dec | oct | hex | ch |
|---|---|---|---|
| 64 | 100 | 40 | @ |
| 65 | 101 | 41 | A |
| 66 | 102 | 42 | B |
| 67 | 103 | 43 | C |
| 68 | 104 | 44 | D |
| 69 | 105 | 45 | E |
| 70 | 106 | 46 | F |
| 71 | 107 | 47 | G |
| 72 | 110 | 48 | H |
| 73 | 111 | 49 | I |
| 74 | 112 | 4a | J |
| 75 | 113 | 4b | K |
| 76 | 114 | 4c | L |
| 77 | 115 | 4d | M |
| 78 | 116 | 4e | N |
| 79 | 117 | 4f | O |
| 80 | 120 | 50 | P |
| 81 | 121 | 51 | Q |
| 82 | 122 | 52 | R |
| 83 | 123 | 53 | S |
| 84 | 124 | 54 | T |
| 85 | 125 | 55 | U |
| 86 | 126 | 56 | V |
| 87 | 127 | 57 | W |
| 88 | 130 | 58 | X |
| 89 | 131 | 59 | Y |
| 90 | 132 | 5a | Z |
| 91 | 133 | 5b | [ |
| 92 | 134 | 5c | \ |
| 93 | 135 | 5d | ] |
| 94 | 136 | 5e | ^ |
| 95 | 137 | 5f | _ |
96–127 (소문자와 기호)
| dec | oct | hex | ch |
|---|---|---|---|
| 96 | 140 | 60 | ` |
| 97 | 141 | 61 | a |
| 98 | 142 | 62 | b |
| 99 | 143 | 63 | c |
| 100 | 144 | 64 | d |
| 101 | 145 | 65 | e |
| 102 | 146 | 66 | f |
| 103 | 147 | 67 | g |
| 104 | 150 | 68 | h |
| 105 | 151 | 69 | i |
| 106 | 152 | 6a | j |
| 107 | 153 | 6b | k |
| 108 | 154 | 6c | l |
| 109 | 155 | 6d | m |
| 110 | 156 | 6e | n |
| 111 | 157 | 6f | o |
| 112 | 160 | 70 | p |
| 113 | 161 | 71 | q |
| 114 | 162 | 72 | r |
| 115 | 163 | 73 | s |
| 116 | 164 | 74 | t |
| 117 | 165 | 75 | u |
| 118 | 166 | 76 | v |
| 119 | 167 | 77 | w |
| 120 | 170 | 78 | x |
| 121 | 171 | 79 | y |
| 122 | 172 | 7a | z |
| 123 | 173 | 7b | { |
| 124 | 174 | 7c | | |
| 125 | 175 | 7d | } |
| 126 | 176 | 7e | ~ |
| 127 | 177 | 7f | DEL (delete) |
예시
출력 가능한 ASCII 문자(32~126)를 순서대로 찍어보는 코드예요.
#include <iostream>
int main()
{
std::cout << "Printable ASCII [32..126]:\n";
for (char c{' '}; c <= '~'; ++c)
std::cout << c << ((c + 1) % 32 ? ' ' : '\n');
std::cout << '\n';
}
가능한 출력:
Printable ASCII [32..126]:
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
(c + 1) % 32로 32문자마다 줄바꿈을 넣어서, 공백(32)부터 ?(63)까지, @(64)부터 _(95)까지, 다시 `(96)부터 ~(126)까지 세 줄로 나뉘는 걸 확인할 수 있어요.
더 알아보기
- 문자를 표현하는 C++ 타입과 와이드 문자의 차이는 문자 리터럴 문서에서 볼 수 있어요.
- 인코딩과 유니코드에 대해 더 알고 싶다면 유니코드 관련 문서를 참고하면 좋아요.
- cppreference의 ASCII 표 원문을 참고할 수 있어요.