字符之本
ASCII 码表
0-127 完整对照 · 可搜索 · 按下任意键即刻查码 · 点击复制
| 十进制 | 十六进制 | 字符 | 说明 |
|---|---|---|---|
| 0 | 0x00 | 不可见 | NUL 空字符 |
| 1 | 0x01 | 不可见 | SOH 标题开始 |
| 2 | 0x02 | 不可见 | STX 正文开始 |
| 3 | 0x03 | 不可见 | ETX 正文结束 |
| 4 | 0x04 | 不可见 | EOT 传输结束 |
| 5 | 0x05 | 不可见 | ENQ 询问 |
| 6 | 0x06 | 不可见 | ACK 确认 |
| 7 | 0x07 | 不可见 | BEL 响铃 |
| 8 | 0x08 | 不可见 | BS 退格 |
| 9 | 0x09 | 不可见 | TAB 水平制表符 |
| 10 | 0x0A | 不可见 | LF 换行 |
| 11 | 0x0B | 不可见 | VT 垂直制表符 |
| 12 | 0x0C | 不可见 | FF 换页 |
| 13 | 0x0D | 不可见 | CR 回车 |
| 14 | 0x0E | 不可见 | SO 移出 |
| 15 | 0x0F | 不可见 | SI 移入 |
| 16 | 0x10 | 不可见 | DLE 数据链路转义 |
| 17 | 0x11 | 不可见 | DC1 设备控制一 |
| 18 | 0x12 | 不可见 | DC2 设备控制二 |
| 19 | 0x13 | 不可见 | DC3 设备控制三 |
| 20 | 0x14 | 不可见 | DC4 设备控制四 |
| 21 | 0x15 | 不可见 | NAK 否定确认 |
| 22 | 0x16 | 不可见 | SYN 同步空闲 |
| 23 | 0x17 | 不可见 | ETB 传输块结束 |
| 24 | 0x18 | 不可见 | CAN 取消 |
| 25 | 0x19 | 不可见 | EM 介质结束 |
| 26 | 0x1A | 不可见 | SUB 替换 |
| 27 | 0x1B | 不可见 | ESC 转义 |
| 28 | 0x1C | 不可见 | FS 文件分隔符 |
| 29 | 0x1D | 不可见 | GS 组分隔符 |
| 30 | 0x1E | 不可见 | RS 记录分隔符 |
| 31 | 0x1F | 不可见 | US 单元分隔符 |
| 32 | 0x20 | ␣ | 空格 |
| 33 | 0x21 | ! | 符号 ! |
| 34 | 0x22 | " | 符号 " |
| 35 | 0x23 | # | 符号 # |
| 36 | 0x24 | $ | 符号 $ |
| 37 | 0x25 | % | 符号 % |
| 38 | 0x26 | & | 符号 & |
| 39 | 0x27 | ' | 符号 ' |
| 40 | 0x28 | ( | 符号 ( |
| 41 | 0x29 | ) | 符号 ) |
| 42 | 0x2A | * | 符号 * |
| 43 | 0x2B | + | 符号 + |
| 44 | 0x2C | , | 符号 , |
| 45 | 0x2D | - | 符号 - |
| 46 | 0x2E | . | 符号 . |
| 47 | 0x2F | / | 符号 / |
| 48 | 0x30 | 0 | 数字 0 |
| 49 | 0x31 | 1 | 数字 1 |
| 50 | 0x32 | 2 | 数字 2 |
| 51 | 0x33 | 3 | 数字 3 |
| 52 | 0x34 | 4 | 数字 4 |
| 53 | 0x35 | 5 | 数字 5 |
| 54 | 0x36 | 6 | 数字 6 |
| 55 | 0x37 | 7 | 数字 7 |
| 56 | 0x38 | 8 | 数字 8 |
| 57 | 0x39 | 9 | 数字 9 |
| 58 | 0x3A | : | 符号 : |
| 59 | 0x3B | ; | 符号 ; |
| 60 | 0x3C | < | 符号 < |
| 61 | 0x3D | = | 符号 = |
| 62 | 0x3E | > | 符号 > |
| 63 | 0x3F | ? | 符号 ? |
| 64 | 0x40 | @ | 符号 @ |
| 65 | 0x41 | A | 大写字母 A |
| 66 | 0x42 | B | 大写字母 B |
| 67 | 0x43 | C | 大写字母 C |
| 68 | 0x44 | D | 大写字母 D |
| 69 | 0x45 | E | 大写字母 E |
| 70 | 0x46 | F | 大写字母 F |
| 71 | 0x47 | G | 大写字母 G |
| 72 | 0x48 | H | 大写字母 H |
| 73 | 0x49 | I | 大写字母 I |
| 74 | 0x4A | J | 大写字母 J |
| 75 | 0x4B | K | 大写字母 K |
| 76 | 0x4C | L | 大写字母 L |
| 77 | 0x4D | M | 大写字母 M |
| 78 | 0x4E | N | 大写字母 N |
| 79 | 0x4F | O | 大写字母 O |
| 80 | 0x50 | P | 大写字母 P |
| 81 | 0x51 | Q | 大写字母 Q |
| 82 | 0x52 | R | 大写字母 R |
| 83 | 0x53 | S | 大写字母 S |
| 84 | 0x54 | T | 大写字母 T |
| 85 | 0x55 | U | 大写字母 U |
| 86 | 0x56 | V | 大写字母 V |
| 87 | 0x57 | W | 大写字母 W |
| 88 | 0x58 | X | 大写字母 X |
| 89 | 0x59 | Y | 大写字母 Y |
| 90 | 0x5A | Z | 大写字母 Z |
| 91 | 0x5B | [ | 符号 [ |
| 92 | 0x5C | \ | 符号 \ |
| 93 | 0x5D | ] | 符号 ] |
| 94 | 0x5E | ^ | 符号 ^ |
| 95 | 0x5F | _ | 符号 _ |
| 96 | 0x60 | ` | 符号 ` |
| 97 | 0x61 | a | 小写字母 a |
| 98 | 0x62 | b | 小写字母 b |
| 99 | 0x63 | c | 小写字母 c |
| 100 | 0x64 | d | 小写字母 d |
| 101 | 0x65 | e | 小写字母 e |
| 102 | 0x66 | f | 小写字母 f |
| 103 | 0x67 | g | 小写字母 g |
| 104 | 0x68 | h | 小写字母 h |
| 105 | 0x69 | i | 小写字母 i |
| 106 | 0x6A | j | 小写字母 j |
| 107 | 0x6B | k | 小写字母 k |
| 108 | 0x6C | l | 小写字母 l |
| 109 | 0x6D | m | 小写字母 m |
| 110 | 0x6E | n | 小写字母 n |
| 111 | 0x6F | o | 小写字母 o |
| 112 | 0x70 | p | 小写字母 p |
| 113 | 0x71 | q | 小写字母 q |
| 114 | 0x72 | r | 小写字母 r |
| 115 | 0x73 | s | 小写字母 s |
| 116 | 0x74 | t | 小写字母 t |
| 117 | 0x75 | u | 小写字母 u |
| 118 | 0x76 | v | 小写字母 v |
| 119 | 0x77 | w | 小写字母 w |
| 120 | 0x78 | x | 小写字母 x |
| 121 | 0x79 | y | 小写字母 y |
| 122 | 0x7A | z | 小写字母 z |
| 123 | 0x7B | { | 符号 { |
| 124 | 0x7C | | | 符号 | |
| 125 | 0x7D | } | 符号 } |
| 126 | 0x7E | ~ | 符号 ~ |
| 127 | 0x7F | 不可见 | DEL 删除 |
共 128 项 · 可打印字符点击行即复制
三个值得背下来的编码规律
一、数字从 48 开始。字符 0 的码是 48,所以「字符数字转整数」只需减 48—— 这是所有语言 atoi 实现的第一行。顺带记住:9 是 57,数字区恰好十个连续码位。
二、大小写差 32。A=65、a=97,差值 32 对应二进制第 5 位。 手写大小写转换时 ch ^ 32 一步搞定; 判断字母可用 (ch | 32) - 97 < 26 同时兼容大小写。
三、可打印区从 32 开始。32 是空格,33 起是可见字符,127 是 DEL。 校验「可打印 ASCII」的判断式 32 <= ch <= 126 在解析协议时每天都会用到。
常见问题
为什么大写 A 是 65,小写 a 是 97?+
这是 ASCII 设计者的精心安排:大小写字母的编码恰好相差 32(97-65=32),二进制上只差一个位(第 5 位)。于是大小写转换只需一次位运算 ch ^ 32 或 ch | 32,无需查表——上世纪六十年代的硬件条件下,这个设计省下了真金白银的电路。数字同理:字符 0 是 48,字符减 48 即得真值,位运算 ch & 15 也行。
换行 LF 和回车 CR 有什么区别?+
源自打字机时代:CR(Carriage Return,13)把打印头移回行首,LF(Line Feed,10)把纸往上滚一行,两个动作合起来才是「换行」。这个历史包袱延续至今——Windows 用 CRLF(\r\n)表示换行,Unix/Linux/macOS 只用 LF(\n),老 Mac 曾单用 CR。跨平台文本出现莫名空行或挤成一行,九成是换行符不一致。
ASCII 和 Unicode 是什么关系?+
ASCII 只有 128 个字符(7 位),是 1963 年的美国标准;Unicode 收录了全世界十几万个字符。两者无缝衔接:Unicode 的前 128 个码位与 ASCII 完全一致,UTF-8 编码下 ASCII 字符仍只占一个字节。所以 ASCII 表永远不会过时——它既是活标准,也是理解一切字符编码的起点。
控制字符现在还有用吗?+
大部分已退出日常视野,但几位仍在关键岗位:TAB(9)缩进、LF(10)换行、CR(13)回车、ESC(27)是终端转义序列的开端(彩色输出、光标控制全靠它)、BEL(7)仍会让终端「叮」一声。NUL(0)则继续担任 C 语言字符串的结尾标志——面试考 strlen 原理时它必出场。