ASCII 码表

ASCII(American Standard Code for Information Interchange):7 位字符编码,定义 128 个字符——33 个控制字符 + 95 个可打印字符。只用 7 位这个设计后来成为 UTF-8 前向兼容的地基:所有 ASCII 字节在 UTF-8 中原样合法。本表按 Dec(十进制)/ Hex(十六进制)双索引,配合 Unicode 笔记查阅。

控制字符(0–31, 127)

DecHex转义缩写名称说明
00x00\0NULC 字符串终止符
10x01^ASOH头始传输块头部开始
20x02^BSTX文始传输正文开始
30x03^CETX文终终端中断信号(Ctrl+C)的来源
40x04^DEOT传输结束Unix 终端 EOF(Ctrl+D)
50x05^EENQ询问请求应答
60x06^FACK确认应答确认
70x07\aBEL响铃终端鸣铃(电传打字机的实体铃)
80x08\bBS退格光标左移一格
90x09\tHT水平制表Tab
100x0A\nLF换行Unix 行结束符
110x0B\vVT垂直制表
120x0C\fFF换页打印机进页
130x0D\rCR回车光标回到行首;Windows 与 LF 连用(CRLF)
140x0E^NSO移出切换备用字符集
150x0F^OSI移入切回主字符集
160x10^PDLE数据链转义
170x11^QDC1设备控制1XON,软件流控恢复
180x12^RDC2设备控制2
190x13^SDC3设备控制3XOFF,软件流控暂停
200x14^TDC4设备控制4
210x15^UNAK否认
220x16^VSYN同步空闲
230x17^WETB块传输终
240x18^XCAN取消
250x19^YEM介质结束
260x1A^ZSUB替换DOS 文本 EOF;Unix 终端挂起
270x1B^[ESC转义ANSI 转义序列(终端颜色、光标控制)的起点
280x1C^\FS文件分隔
290x1D^]GS组分隔
300x1E^^RS记录分隔
310x1F^_US单元分隔
1270x7F^?DEL删除纸带时代全打孔=抹除,所以排在 7 位末尾

可打印字符(32–126)

每格”Dec 字符”;SP 为空格。两个语法特例:| 本身是表格列分隔符(也是shell里面的管道符),写作 \| 才能显示;反引号字符须用双反引号包裹。

DecCharDecCharDecCharDecChar
32SP33!34"35#
36$37%38&39'
40(41)42*43+
44,45-46.47/
480491502513
524535546557
56857958:59;
60<61=62>63?
64@65A66B67C
68D69E70F71G
72H73I74J75K
76L77M78N79O
80P81Q82R83S
84T85U86V87W
88X89Y90Z91[
92\93]94^95_
96`97a98b99c
100d101e102f103g
104h105i106j107k
108l109m110n111o
112p113q114r115s
116t117u118v119w
120x121y122z123{
124|125}126~

记忆锚点

数字与字母的起始值不需要背表,记四个锚点即可推出全部:

  • '0' = 48(0x30):数字区 0x30–0x39,'7' - '0' = 7 就来自这段连续性
  • 'A' = 65(0x41)'a' = 97(0x61):大小写恒差 32(0x20),即第 6 位的翻转——'A' | 0x20 == 'a',所以 ch & ~0x20 强制大写、ch | 0x20 强制小写
  • DEL = 127(0x7F):7 位全 1。纸带时代打孔不易擦除,全部打上孔表示作废——排序与语义都源于介质
  • 0x23 0x21 = #!shebang 就是这两个字节的 魔数# 是 35、! 是 33

控制字符的电传打字机遗产至今可见:终端里 Ctrl+C 发 ETX、Ctrl+D 发 EOT、Ctrl+Z 发 SUB,Ctrl 键的做法本质就是把字母码位高 3 位清零('C' & 0x1F = 3)。