ASCII码表:0-127 十进制、十六进制与二进制对照

2026/08/14

ASCII码表把每个标准 ASCII 字符与一个 0 到 127 的数字对应起来。程序、终端、网络协议和文本文件最终存储的是数字,而这张 ASCII 对照表说明了数字如何解释为英文字母、数字、标点符号或控制指令。

下面的完整 ASCII 字符表同时列出十进制、十六进制和 7 位二进制表示。需要检查数值进制时,可以配合十进制转二进制工具二进制转十进制工具使用;如果想比较更大范围的整数表示,可以查看二进制表

完整 ASCII码表:0 到 127

标准 ASCII 一共包含 128 个代码。代码 0–31 和 127 是控制字符,代码 32–126 是可打印字符。表格中的二进制列固定为 7 位,因此可以直接看出 ASCII 原始编码的位宽。

十进制 0 到 127 的标准 ASCII 码表
十进制十六进制二进制字符说明
0000000000NUL空字符
1010000001SOH标题开始
2020000010STX正文开始
3030000011ETX正文结束
4040000100EOT传输结束
5050000101ENQ询问
6060000110ACK确认
7070000111BEL响铃
8080001000BS退格
9090001001HT水平制表
100A0001010LF换行
110B0001011VT垂直制表
120C0001100FF换页
130D0001101CR回车
140E0001110SO移出
150F0001111SI移入
16100010000DLE数据链路转义
17110010001DC1设备控制 1
18120010010DC2设备控制 2
19130010011DC3设备控制 3
20140010100DC4设备控制 4
21150010101NAK否定确认
22160010110SYN同步空闲
23170010111ETB传输块结束
24180011000CAN取消
25190011001EM介质结束
261A0011010SUB替换
271B0011011ESC转义
281C0011100FS文件分隔符
291D0011101GS组分隔符
301E0011110RS记录分隔符
311F0011111US单元分隔符
32200100000SP空格
33210100001!感叹号
34220100010"双引号
35230100011#井号
36240100100$美元符号
37250100101%百分号
38260100110&与号
39270100111'撇号
40280101000(左圆括号
41290101001)右圆括号
422A0101010*星号
432B0101011+加号
442C0101100,逗号
452D0101101-连字符与减号
462E0101110.句点
472F0101111/斜杠
483001100000数字 0
493101100011数字 1
503201100102数字 2
513301100113数字 3
523401101004数字 4
533501101015数字 5
543601101106数字 6
553701101117数字 7
563801110008数字 8
573901110019数字 9
583A0111010:冒号
593B0111011;分号
603C0111100<小于号
613D0111101=等号
623E0111110>大于号
633F0111111?问号
64401000000@艾特符号
65411000001A大写字母 A
66421000010B大写字母 B
67431000011C大写字母 C
68441000100D大写字母 D
69451000101E大写字母 E
70461000110F大写字母 F
71471000111G大写字母 G
72481001000H大写字母 H
73491001001I大写字母 I
744A1001010J大写字母 J
754B1001011K大写字母 K
764C1001100L大写字母 L
774D1001101M大写字母 M
784E1001110N大写字母 N
794F1001111O大写字母 O
80501010000P大写字母 P
81511010001Q大写字母 Q
82521010010R大写字母 R
83531010011S大写字母 S
84541010100T大写字母 T
85551010101U大写字母 U
86561010110V大写字母 V
87571010111W大写字母 W
88581011000X大写字母 X
89591011001Y大写字母 Y
905A1011010Z大写字母 Z
915B1011011[左方括号
925C1011100\反斜杠
935D1011101]右方括号
945E1011110^脱字符
955F1011111_下划线
96601100000`重音符
97611100001a小写字母 a
98621100010b小写字母 b
99631100011c小写字母 c
100641100100d小写字母 d
101651100101e小写字母 e
102661100110f小写字母 f
103671100111g小写字母 g
104681101000h小写字母 h
105691101001i小写字母 i
1066A1101010j小写字母 j
1076B1101011k小写字母 k
1086C1101100l小写字母 l
1096D1101101m小写字母 m
1106E1101110n小写字母 n
1116F1101111o小写字母 o
112701110000p小写字母 p
113711110001q小写字母 q
114721110010r小写字母 r
115731110011s小写字母 s
116741110100t小写字母 t
117751110101u小写字母 u
118761110110v小写字母 v
119771110111w小写字母 w
120781111000x小写字母 x
121791111001y小写字母 y
1227A1111010z小写字母 z
1237B1111011{左花括号
1247C1111100|竖线
1257D1111101}右花括号
1267E1111110~波浪号
1277F1111111DEL删除

ASCII 是什么

ASCII 是 American Standard Code for Information Interchange 的缩写,中文通常译为“美国信息交换标准代码”。它的作用不是规定字母的外观,而是给有限的一组字符分配稳定的数值。例如,大写字母 A 的 ASCII 十进制值是 65,小写字母 a 是 97,空格是 32。

这个映射使不同设备能够交换文本。只要发送方和接收方都按照同一份 ASCII 编码表解释数值,字节 01000001 就能稳定地还原为 A。字体可以改变字符显示的形状,但不会改变对应的 ASCII 值。

标准 ASCII 使用 7 位。7 位可以形成 27=1282^7=128 种组合,恰好覆盖 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 当作十六进制读取时,计算过程是 4×16+1=654\times16+1=65;将 1000001 当作二进制读取时,计算过程是 64+1=6564+1=65

ASCII 控制字符:代码 0–31 和 127

ASCII码表开头的 32 个代码不是普通文字。它们最初用于控制电传打字机、通信线路和数据传输流程,因此表格显示的是 NULTABLF 等缩写,而不是可见字形。代码 127 的 DEL 也属于控制字符。

今天仍然经常遇到的控制代码包括:

缩写十进制十六进制含义与常见用途
NUL000空字符;C 风格字符串常用它标记结尾
BEL707响铃;终端可用它触发提示音或视觉提醒
BS808退格
TAB909水平制表符
LF100A换行,Unix 和 Linux 文本通常用它结束一行
CR130D回车;Windows 换行通常使用 CR 与 LF 的组合
ESC271B转义;终端控制序列常以它开头
DEL1277F删除字符

控制字符通常不会在屏幕上显示成独立符号。看到日志中的 \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 编码表的可打印部分可以按连续范围快速记忆:

范围十进制代码十六进制代码内容
空格3220
常用标点33–4721–2F!/
数字48–5730–3909
标点58–643A–40:@
大写字母65–9041–5AAZ
标点91–965B–60[ 到反引号
小写字母97–12261–7Aaz
末尾标点123–1267B–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码表中,大写字母 AZ 的范围是 65–90,小写字母 az 的范围是 97–122。对应大小写字母的代码固定相差 32:

'A' = 65,'a' = 97
'B' = 66,'b' = 98
'Z' = 90,'z' = 122

这一布局能帮助理解某些底层大小写转换代码,但实际应用仍应使用语言提供的 Unicode 字符处理函数。简单加减 32 只适用于 ASCII 英文字母,不能正确处理中文、带重音字母或其他 Unicode 字符。

十六进制中的字符范围容易辨认

ASCII 数字 09 对应十六进制 3039,大写字母对应 415A,小写字母对应 617A。调试十六进制转储时,这些范围尤其有用。看到连续的 48 65 6C 6C 6F,就可以通过 ASCII 对照表还原为 Hello

如何手动转换 ASCII、十进制和二进制

将字符转换为二进制通常分为两步:先从 ASCII 字符表查到十进制代码,再把十进制转为二进制。

例如,将问号 ? 转为 ASCII 二进制:

  1. 在 ASCII码表中找到 ?,其十进制代码是 63。
  2. 把 63 拆成二的幂:63=32+16+8+4+2+163=32+16+8+4+2+1
  3. 因此 7 位结果是 0111111,按 8 位字节书写是 00111111

反向转换时,先计算二进制数值,再查询字符。例如 1000010 等于 64+2=6664+2=66,代码 66 对应大写字母 B。较长的数字可以先用二进制转十进制工具确认数值,或者参考二进制数制指南理解位值计算。

一段文本如何编码

单词 CAT 包含三个字符,因此会得到三个代码,而不是一个大整数:

字符十进制十六进制8 位二进制
C674301000011
A654101000001
T845401010100

写成字节序列就是 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 对照表;需要验证进制换算时,可以使用十进制转二进制工具二进制转十进制工具。理解字符编码与数值表示的区别后,阅读文本文件、终端输出和网络数据都会更准确。

管理员

管理员