ASCII码表把每个标准 ASCII 字符与一个 0 到 127 的数字对应起来。程序、终端、网络协议和文本文件最终存储的是数字,而这张 ASCII 对照表说明了数字如何解释为英文字母、数字、标点符号或控制指令。
下面的完整 ASCII 字符表同时列出十进制、十六进制和 7 位二进制表示。需要检查数值进制时,可以配合十进制转二进制工具或二进制转十进制工具使用;如果想比较更大范围的整数表示,可以查看二进制表。
完整 ASCII码表:0 到 127
标准 ASCII 一共包含 128 个代码。代码 0–31 和 127 是控制字符,代码 32–126 是可打印字符。表格中的二进制列固定为 7 位,因此可以直接看出 ASCII 原始编码的位宽。
| 十进制 | 十六进制 | 二进制 | 字符 | 说明 |
|---|---|---|---|---|
| 0 | 00 | 0000000 | NUL | 空字符 |
| 1 | 01 | 0000001 | SOH | 标题开始 |
| 2 | 02 | 0000010 | STX | 正文开始 |
| 3 | 03 | 0000011 | ETX | 正文结束 |
| 4 | 04 | 0000100 | EOT | 传输结束 |
| 5 | 05 | 0000101 | ENQ | 询问 |
| 6 | 06 | 0000110 | ACK | 确认 |
| 7 | 07 | 0000111 | BEL | 响铃 |
| 8 | 08 | 0001000 | BS | 退格 |
| 9 | 09 | 0001001 | HT | 水平制表 |
| 10 | 0A | 0001010 | LF | 换行 |
| 11 | 0B | 0001011 | VT | 垂直制表 |
| 12 | 0C | 0001100 | FF | 换页 |
| 13 | 0D | 0001101 | CR | 回车 |
| 14 | 0E | 0001110 | SO | 移出 |
| 15 | 0F | 0001111 | SI | 移入 |
| 16 | 10 | 0010000 | DLE | 数据链路转义 |
| 17 | 11 | 0010001 | DC1 | 设备控制 1 |
| 18 | 12 | 0010010 | DC2 | 设备控制 2 |
| 19 | 13 | 0010011 | DC3 | 设备控制 3 |
| 20 | 14 | 0010100 | DC4 | 设备控制 4 |
| 21 | 15 | 0010101 | NAK | 否定确认 |
| 22 | 16 | 0010110 | SYN | 同步空闲 |
| 23 | 17 | 0010111 | ETB | 传输块结束 |
| 24 | 18 | 0011000 | CAN | 取消 |
| 25 | 19 | 0011001 | EM | 介质结束 |
| 26 | 1A | 0011010 | SUB | 替换 |
| 27 | 1B | 0011011 | ESC | 转义 |
| 28 | 1C | 0011100 | FS | 文件分隔符 |
| 29 | 1D | 0011101 | GS | 组分隔符 |
| 30 | 1E | 0011110 | RS | 记录分隔符 |
| 31 | 1F | 0011111 | US | 单元分隔符 |
| 32 | 20 | 0100000 | SP | 空格 |
| 33 | 21 | 0100001 | ! | 感叹号 |
| 34 | 22 | 0100010 | " | 双引号 |
| 35 | 23 | 0100011 | # | 井号 |
| 36 | 24 | 0100100 | $ | 美元符号 |
| 37 | 25 | 0100101 | % | 百分号 |
| 38 | 26 | 0100110 | & | 与号 |
| 39 | 27 | 0100111 | ' | 撇号 |
| 40 | 28 | 0101000 | ( | 左圆括号 |
| 41 | 29 | 0101001 | ) | 右圆括号 |
| 42 | 2A | 0101010 | * | 星号 |
| 43 | 2B | 0101011 | + | 加号 |
| 44 | 2C | 0101100 | , | 逗号 |
| 45 | 2D | 0101101 | - | 连字符与减号 |
| 46 | 2E | 0101110 | . | 句点 |
| 47 | 2F | 0101111 | / | 斜杠 |
| 48 | 30 | 0110000 | 0 | 数字 0 |
| 49 | 31 | 0110001 | 1 | 数字 1 |
| 50 | 32 | 0110010 | 2 | 数字 2 |
| 51 | 33 | 0110011 | 3 | 数字 3 |
| 52 | 34 | 0110100 | 4 | 数字 4 |
| 53 | 35 | 0110101 | 5 | 数字 5 |
| 54 | 36 | 0110110 | 6 | 数字 6 |
| 55 | 37 | 0110111 | 7 | 数字 7 |
| 56 | 38 | 0111000 | 8 | 数字 8 |
| 57 | 39 | 0111001 | 9 | 数字 9 |
| 58 | 3A | 0111010 | : | 冒号 |
| 59 | 3B | 0111011 | ; | 分号 |
| 60 | 3C | 0111100 | < | 小于号 |
| 61 | 3D | 0111101 | = | 等号 |
| 62 | 3E | 0111110 | > | 大于号 |
| 63 | 3F | 0111111 | ? | 问号 |
| 64 | 40 | 1000000 | @ | 艾特符号 |
| 65 | 41 | 1000001 | A | 大写字母 A |
| 66 | 42 | 1000010 | B | 大写字母 B |
| 67 | 43 | 1000011 | C | 大写字母 C |
| 68 | 44 | 1000100 | D | 大写字母 D |
| 69 | 45 | 1000101 | E | 大写字母 E |
| 70 | 46 | 1000110 | F | 大写字母 F |
| 71 | 47 | 1000111 | G | 大写字母 G |
| 72 | 48 | 1001000 | H | 大写字母 H |
| 73 | 49 | 1001001 | I | 大写字母 I |
| 74 | 4A | 1001010 | J | 大写字母 J |
| 75 | 4B | 1001011 | K | 大写字母 K |
| 76 | 4C | 1001100 | L | 大写字母 L |
| 77 | 4D | 1001101 | M | 大写字母 M |
| 78 | 4E | 1001110 | N | 大写字母 N |
| 79 | 4F | 1001111 | O | 大写字母 O |
| 80 | 50 | 1010000 | P | 大写字母 P |
| 81 | 51 | 1010001 | Q | 大写字母 Q |
| 82 | 52 | 1010010 | R | 大写字母 R |
| 83 | 53 | 1010011 | S | 大写字母 S |
| 84 | 54 | 1010100 | T | 大写字母 T |
| 85 | 55 | 1010101 | U | 大写字母 U |
| 86 | 56 | 1010110 | V | 大写字母 V |
| 87 | 57 | 1010111 | W | 大写字母 W |
| 88 | 58 | 1011000 | X | 大写字母 X |
| 89 | 59 | 1011001 | Y | 大写字母 Y |
| 90 | 5A | 1011010 | Z | 大写字母 Z |
| 91 | 5B | 1011011 | [ | 左方括号 |
| 92 | 5C | 1011100 | \ | 反斜杠 |
| 93 | 5D | 1011101 | ] | 右方括号 |
| 94 | 5E | 1011110 | ^ | 脱字符 |
| 95 | 5F | 1011111 | _ | 下划线 |
| 96 | 60 | 1100000 | ` | 重音符 |
| 97 | 61 | 1100001 | a | 小写字母 a |
| 98 | 62 | 1100010 | b | 小写字母 b |
| 99 | 63 | 1100011 | c | 小写字母 c |
| 100 | 64 | 1100100 | d | 小写字母 d |
| 101 | 65 | 1100101 | e | 小写字母 e |
| 102 | 66 | 1100110 | f | 小写字母 f |
| 103 | 67 | 1100111 | g | 小写字母 g |
| 104 | 68 | 1101000 | h | 小写字母 h |
| 105 | 69 | 1101001 | i | 小写字母 i |
| 106 | 6A | 1101010 | j | 小写字母 j |
| 107 | 6B | 1101011 | k | 小写字母 k |
| 108 | 6C | 1101100 | l | 小写字母 l |
| 109 | 6D | 1101101 | m | 小写字母 m |
| 110 | 6E | 1101110 | n | 小写字母 n |
| 111 | 6F | 1101111 | o | 小写字母 o |
| 112 | 70 | 1110000 | p | 小写字母 p |
| 113 | 71 | 1110001 | q | 小写字母 q |
| 114 | 72 | 1110010 | r | 小写字母 r |
| 115 | 73 | 1110011 | s | 小写字母 s |
| 116 | 74 | 1110100 | t | 小写字母 t |
| 117 | 75 | 1110101 | u | 小写字母 u |
| 118 | 76 | 1110110 | v | 小写字母 v |
| 119 | 77 | 1110111 | w | 小写字母 w |
| 120 | 78 | 1111000 | x | 小写字母 x |
| 121 | 79 | 1111001 | y | 小写字母 y |
| 122 | 7A | 1111010 | z | 小写字母 z |
| 123 | 7B | 1111011 | { | 左花括号 |
| 124 | 7C | 1111100 | | | 竖线 |
| 125 | 7D | 1111101 | } | 右花括号 |
| 126 | 7E | 1111110 | ~ | 波浪号 |
| 127 | 7F | 1111111 | DEL | 删除 |
ASCII 是什么
ASCII 是 American Standard Code for Information Interchange 的缩写,中文通常译为“美国信息交换标准代码”。它的作用不是规定字母的外观,而是给有限的一组字符分配稳定的数值。例如,大写字母 A 的 ASCII 十进制值是 65,小写字母 a 是 97,空格是 32。
这个映射使不同设备能够交换文本。只要发送方和接收方都按照同一份 ASCII 编码表解释数值,字节 01000001 就能稳定地还原为 A。字体可以改变字符显示的形状,但不会改变对应的 ASCII 值。
标准 ASCII 使用 7 位。7 位可以形成 种组合,恰好覆盖 0 到 127。现代计算机通常按 8 位字节存储数据,所以 ASCII 字符常以一个字节保存,并把最高位设为 0。例如 A 的 7 位形式是 1000001,放在 8 位字节中通常写成 01000001。这并不意味着标准 ASCII 有 256 个字符。
如何读取 ASCII 对照表
ASCII码表中的每一行都表示同一个代码值,只是使用不同进制书写:
- 十进制使用 0–9,是日常查询 ASCII 代码最常见的格式。
- 十六进制使用 0–9 和 A–F,常见于调试器、协议文档和程序源码。
- 二进制只使用 0 和 1,直接表示计算机中的位模式。
- 字符或缩写说明该代码代表可打印字符,还是不可见的控制功能。
以大写字母 A 为例,它在 ASCII 字符表中的十进制值是 65,十六进制是 41,7 位二进制是 1000001:
字符:A
十进制:65
十六进制:41
7 位二进制:1000001
8 位写法:01000001这些表示法的数值完全相同。将 41 当作十六进制读取时,计算过程是 ;将 1000001 当作二进制读取时,计算过程是 。
ASCII 控制字符:代码 0–31 和 127
ASCII码表开头的 32 个代码不是普通文字。它们最初用于控制电传打字机、通信线路和数据传输流程,因此表格显示的是 NUL、TAB、LF 等缩写,而不是可见字形。代码 127 的 DEL 也属于控制字符。
今天仍然经常遇到的控制代码包括:
| 缩写 | 十进制 | 十六进制 | 含义与常见用途 |
|---|---|---|---|
| NUL | 0 | 00 | 空字符;C 风格字符串常用它标记结尾 |
| BEL | 7 | 07 | 响铃;终端可用它触发提示音或视觉提醒 |
| BS | 8 | 08 | 退格 |
| TAB | 9 | 09 | 水平制表符 |
| LF | 10 | 0A | 换行,Unix 和 Linux 文本通常用它结束一行 |
| CR | 13 | 0D | 回车;Windows 换行通常使用 CR 与 LF 的组合 |
| ESC | 27 | 1B | 转义;终端控制序列常以它开头 |
| DEL | 127 | 7F | 删除字符 |
控制字符通常不会在屏幕上显示成独立符号。看到日志中的 \n、\r 或 \t 时,程序使用的是转义写法:许多语言用 \n 表示 LF,用 \r 表示 CR,用 \t 表示 TAB。转义写法属于编程语言语法,实际存储的仍是对应代码。
CR、LF 和跨平台换行
换行问题是 ASCII 控制码最常见的实际用途之一。Unix、Linux 和现代 macOS 文本通常使用一个 LF(十进制 10);Windows 文本通常使用 CRLF,也就是 CR(13)后接 LF(10)。某些旧系统曾只使用 CR。
因此,同一段肉眼看起来相同的多行文本,在不同平台上可能有不同的字节。解析网络协议或比较文本文件时,不应把 CR、LF 和 CRLF 混为一谈。
ASCII 可打印字符:代码 32–126
可打印区从空格开始,到波浪号结束。空格虽然肉眼不可见,但它占据字符位置,因此属于可打印字符。ASCII 编码表的可打印部分可以按连续范围快速记忆:
| 范围 | 十进制代码 | 十六进制代码 | 内容 |
|---|---|---|---|
| 空格 | 32 | 20 | |
| 常用标点 | 33–47 | 21–2F | ! 到 / |
| 数字 | 48–57 | 30–39 | 0 到 9 |
| 标点 | 58–64 | 3A–40 | : 到 @ |
| 大写字母 | 65–90 | 41–5A | A 到 Z |
| 标点 | 91–96 | 5B–60 | [ 到反引号 |
| 小写字母 | 97–122 | 61–7A | a 到 z |
| 末尾标点 | 123–126 | 7B–7E | { 到 ~ |
这些连续范围让程序能够用简单的数值比较识别基本字符。例如,一个值落在 48–57 之间,就属于 ASCII 数字字符;落在 65–90 之间,就属于大写英文字母。
ASCII 编码中的常见规律
数字字符不是对应的整数值
字符 '0' 的 ASCII 值是 48,而不是数值 0;字符 '9' 的 ASCII 值是 57,而不是数值 9。把一个数字字符转换成整数时,常见做法是减去 '0' 的代码:
'7' 的 ASCII 值 = 55
'0' 的 ASCII 值 = 48
55 - 48 = 7反过来,把 0–9 的整数变为对应字符,可以加上 48。这个规律只适用于单个十进制数字字符,不能直接把整数 42 变成两个字符 '4' 和 '2'。
大小写字母相差 32
在 ASCII码表中,大写字母 A–Z 的范围是 65–90,小写字母 a–z 的范围是 97–122。对应大小写字母的代码固定相差 32:
'A' = 65,'a' = 97
'B' = 66,'b' = 98
'Z' = 90,'z' = 122这一布局能帮助理解某些底层大小写转换代码,但实际应用仍应使用语言提供的 Unicode 字符处理函数。简单加减 32 只适用于 ASCII 英文字母,不能正确处理中文、带重音字母或其他 Unicode 字符。
十六进制中的字符范围容易辨认
ASCII 数字 0–9 对应十六进制 30–39,大写字母对应 41–5A,小写字母对应 61–7A。调试十六进制转储时,这些范围尤其有用。看到连续的 48 65 6C 6C 6F,就可以通过 ASCII 对照表还原为 Hello。
如何手动转换 ASCII、十进制和二进制
将字符转换为二进制通常分为两步:先从 ASCII 字符表查到十进制代码,再把十进制转为二进制。
例如,将问号 ? 转为 ASCII 二进制:
- 在 ASCII码表中找到
?,其十进制代码是 63。 - 把 63 拆成二的幂:。
- 因此 7 位结果是
0111111,按 8 位字节书写是00111111。
反向转换时,先计算二进制数值,再查询字符。例如 1000010 等于 ,代码 66 对应大写字母 B。较长的数字可以先用二进制转十进制工具确认数值,或者参考二进制数制指南理解位值计算。
一段文本如何编码
单词 CAT 包含三个字符,因此会得到三个代码,而不是一个大整数:
| 字符 | 十进制 | 十六进制 | 8 位二进制 |
|---|---|---|---|
| C | 67 | 43 | 01000011 |
| A | 65 | 41 | 01000001 |
| T | 84 | 54 | 01010100 |
写成字节序列就是 43 41 54(十六进制)或 01000011 01000001 01010100(二进制)。字节之间的空格只是为了方便阅读,文件是否包含分隔符取决于具体格式。
标准 ASCII、扩展 ASCII 与 Unicode 的区别
“ASCII”严格指 0–127 的 7 位标准,这也是本文 ASCII码表覆盖的范围。所谓“扩展 ASCII”通常把第八位也用于字符,形成 128–255 的额外代码。但扩展区并没有唯一、通用的字符映射;不同代码页可能把同一个数值解释成完全不同的符号。
Unicode 解决了全球文字需要统一编号的问题。它为中文、阿拉伯文、数学符号和大量其他字符定义代码点。UTF-8 是 Unicode 的一种编码方式,并刻意保持与 ASCII 兼容:Unicode 的 U+0000–U+007F 与标准 ASCII 数值相同,在 UTF-8 中也使用相同的单字节表示。
这意味着纯 ASCII 文本同时也是有效的 UTF-8 文本,但反过来不成立。中文字符不在标准 ASCII 编码表中,在 UTF-8 中通常需要多个字节。遇到乱码时,应先确认实际编码,不应仅凭文件包含英文字母就假设整个文件都是 ASCII。
ASCII码表的实际用途
- 调试文本和字节数据: 在十六进制转储中识别可打印字符与换行、制表符等控制码。
- 阅读协议格式: 许多文本协议用 ASCII 字符表示命令、字段和分隔符。
- 处理文件格式: 判断文件头、记录分隔符以及行尾采用 LF 还是 CRLF。
- 编程练习: 理解字符、整数和二进制位模式之间的区别。
- 数据验证: 检查输入是否只包含 ASCII 数字、字母或可打印字符。
ASCII码表适合查询确定的代码,但不能单独说明一个任意字节流采用什么字符编码。相同字节在 UTF-8、旧式代码页或二进制文件中可能承担不同作用,解释数据时还需要文件格式或协议上下文。
常见问题
ASCII 是 7 位还是 8 位?
标准 ASCII 是 7 位,共有 128 个代码,范围为 0–127。它经常存放在 8 位字节中,最高位补 0。“8 位 ASCII”通常实际指某种扩展代码页,而不是统一的标准 ASCII。
ASCII 32 是什么字符?
十进制 32、十六进制 20 对应空格。它不显示可见图形,但在文本中占据一个字符位置,也是 ASCII 可打印区的第一个字符。
ASCII 65 和 97 分别是什么?
十进制 65 是大写字母 A,十六进制为 41;十进制 97 是小写字母 a,十六进制为 61。对应大小写字母的 ASCII 代码相差 32。
ASCII 中的换行代码是什么?
LF 的十进制代码是 10,十六进制是 0A;CR 的十进制代码是 13,十六进制是 0D。Unix 风格文本通常使用 LF,Windows 风格文本通常使用 CRLF。
ASCII 能表示中文吗?
不能。标准 ASCII 只包含基本拉丁字母、数字、部分标点和控制字符。中文应使用 Unicode 编码,网页和现代文本文件通常采用 UTF-8。
ASCII 与 Unicode 是否冲突?
不冲突。Unicode 前 128 个代码点与 ASCII 保持一致,UTF-8 对这些代码使用相同的单字节值。因此 ASCII 可以看作 Unicode 和 UTF-8 的兼容子集。
如何判断一个代码是否为可打印 ASCII?
通常检查数值是否位于 32–126。代码 32 是空格,33–126 有可见字形;0–31 和 127 是控制字符。具体程序还应明确输入是字节值、字符还是 Unicode 代码点。
快速总结
标准 ASCII码表包含 0–127:控制字符占 0–31 和 127,可打印字符占 32–126。数字字符从 48 开始,大写字母从 65 开始,小写字母从 97 开始。每个代码都能写成十进制、十六进制或 7 位二进制,它们只是同一个数值的不同表示。
查询单个字符时,直接使用本文的 ASCII 对照表;需要验证进制换算时,可以使用十进制转二进制工具和二进制转十进制工具。理解字符编码与数值表示的区别后,阅读文本文件、终端输出和网络数据都会更准确。
