ASCII 码表
ASCII(American Standard Code for Information Interchange):7 位字符编码,定义 128 个字符——33 个控制字符 + 95 个可打印字符。只用 7 位这个设计后来成为 UTF-8 前向兼容的地基:所有 ASCII 字节在 UTF-8 中原样合法。本表按 Dec(十进制)/ Hex(十六进制)双索引,配合 Unicode 笔记查阅。
控制字符(0–31, 127)
| Dec | Hex | 转义 | 缩写 | 名称 | 说明 |
|---|---|---|---|---|---|
| 0 | 0x00 | \0 | NUL | 空 | C 字符串终止符 |
| 1 | 0x01 | ^A | SOH | 头始 | 传输块头部开始 |
| 2 | 0x02 | ^B | STX | 文始 | 传输正文开始 |
| 3 | 0x03 | ^C | ETX | 文终 | 终端中断信号(Ctrl+C)的来源 |
| 4 | 0x04 | ^D | EOT | 传输结束 | Unix 终端 EOF(Ctrl+D) |
| 5 | 0x05 | ^E | ENQ | 询问 | 请求应答 |
| 6 | 0x06 | ^F | ACK | 确认 | 应答确认 |
| 7 | 0x07 | \a | BEL | 响铃 | 终端鸣铃(电传打字机的实体铃) |
| 8 | 0x08 | \b | BS | 退格 | 光标左移一格 |
| 9 | 0x09 | \t | HT | 水平制表 | Tab |
| 10 | 0x0A | \n | LF | 换行 | Unix 行结束符 |
| 11 | 0x0B | \v | VT | 垂直制表 | |
| 12 | 0x0C | \f | FF | 换页 | 打印机进页 |
| 13 | 0x0D | \r | CR | 回车 | 光标回到行首;Windows 与 LF 连用(CRLF) |
| 14 | 0x0E | ^N | SO | 移出 | 切换备用字符集 |
| 15 | 0x0F | ^O | SI | 移入 | 切回主字符集 |
| 16 | 0x10 | ^P | DLE | 数据链转义 | |
| 17 | 0x11 | ^Q | DC1 | 设备控制1 | XON,软件流控恢复 |
| 18 | 0x12 | ^R | DC2 | 设备控制2 | |
| 19 | 0x13 | ^S | DC3 | 设备控制3 | XOFF,软件流控暂停 |
| 20 | 0x14 | ^T | DC4 | 设备控制4 | |
| 21 | 0x15 | ^U | NAK | 否认 | |
| 22 | 0x16 | ^V | SYN | 同步空闲 | |
| 23 | 0x17 | ^W | ETB | 块传输终 | |
| 24 | 0x18 | ^X | CAN | 取消 | |
| 25 | 0x19 | ^Y | EM | 介质结束 | |
| 26 | 0x1A | ^Z | SUB | 替换 | DOS 文本 EOF;Unix 终端挂起 |
| 27 | 0x1B | ^[ | ESC | 转义 | ANSI 转义序列(终端颜色、光标控制)的起点 |
| 28 | 0x1C | ^\ | FS | 文件分隔 | |
| 29 | 0x1D | ^] | GS | 组分隔 | |
| 30 | 0x1E | ^^ | RS | 记录分隔 | |
| 31 | 0x1F | ^_ | US | 单元分隔 | |
| 127 | 0x7F | ^? | DEL | 删除 | 纸带时代全打孔=抹除,所以排在 7 位末尾 |
可打印字符(32–126)
每格”Dec 字符”;SP 为空格。两个语法特例:| 本身是表格列分隔符(也是shell里面的管道符),写作 \| 才能显示;反引号字符须用双反引号包裹。
| Dec | Char | Dec | Char | Dec | Char | Dec | Char |
|---|---|---|---|---|---|---|---|
| 32 | SP | 33 | ! | 34 | " | 35 | # |
| 36 | $ | 37 | % | 38 | & | 39 | ' |
| 40 | ( | 41 | ) | 42 | * | 43 | + |
| 44 | , | 45 | - | 46 | . | 47 | / |
| 48 | 0 | 49 | 1 | 50 | 2 | 51 | 3 |
| 52 | 4 | 53 | 5 | 54 | 6 | 55 | 7 |
| 56 | 8 | 57 | 9 | 58 | : | 59 | ; |
| 60 | < | 61 | = | 62 | > | 63 | ? |
| 64 | @ | 65 | A | 66 | B | 67 | C |
| 68 | D | 69 | E | 70 | F | 71 | G |
| 72 | H | 73 | I | 74 | J | 75 | K |
| 76 | L | 77 | M | 78 | N | 79 | O |
| 80 | P | 81 | Q | 82 | R | 83 | S |
| 84 | T | 85 | U | 86 | V | 87 | W |
| 88 | X | 89 | Y | 90 | Z | 91 | [ |
| 92 | \ | 93 | ] | 94 | ^ | 95 | _ |
| 96 | ` | 97 | a | 98 | b | 99 | c |
| 100 | d | 101 | e | 102 | f | 103 | g |
| 104 | h | 105 | i | 106 | j | 107 | k |
| 108 | l | 109 | m | 110 | n | 111 | o |
| 112 | p | 113 | q | 114 | r | 115 | s |
| 116 | t | 117 | u | 118 | v | 119 | w |
| 120 | x | 121 | y | 122 | z | 123 | { |
| 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)。