ASCII 表参考

你输入的每个英文可打印字符,在七位 ASCII 标准中都映射到 32 到 126 之间的数字。32 以下和 127 是控制码,LF、CR、ESC、DEL 等,在调试串行协议或修复行尾时仍然重要。本参考表列出 0 到 127 的每个码位,并附上十进制、十六进制、八进制、二进制和 HTML 实体形式。

如何使用 ASCII 表

  1. 1

    扫描需要的字符所在行

    可按字母、符号或码位名称搜索。控制码按三字母助记符列出。

  2. 2

    横向读取所需编码

    十进制适合人类友好的代码,十六进制适合源代码,二进制适合协议工作,HTML 实体适合标记。

  3. 3

    复制任意单元格

    当你拿到十六进制转储或字节序列,需要知道它读起来是什么时很有用。

ASCII 的三个范围

范围 十进制 内容
控制字符 0-31, 127 NUL、BEL、BS、HT、LF、VT、FF、CR、ESC、DEL 等
可打印字符 32-126 空格、标点、数字、A-Z、a-z
扩展(非 ASCII) 128+ 取决于编码;ASCII 严格止于 127

仍然重要的控制码

  • 0x00 NUL,C 中的字符串终止符,某些二进制格式中的填充。
  • 0x07 BEL,让终端响铃。
  • 0x08 BS,退格。
  • 0x09 HT,水平制表符。
  • 0x0A LF,换行,Unix 的换行符。
  • 0x0D CR,回车;在 Windows 上与 LF 配对形成 CRLF。
  • 0x1B ESC,启动用于终端颜色的 ANSI 转义序列。
  • 0x7F DEL,最初用于在纸带上打孔删除;现在很少使用。

ASCII 与 Unicode

Unicode 保留了 ASCII 前 128 个码位的含义,UTF-8 也使用相同的单字节来编码这些值。因此,只包含 ASCII 字符的 UTF-8 文件与其 ASCII 表示逐字节相同。但并非所有字符编码都采用 ASCII 的字节值,EBCDIC 就是一个著名的反例。

常见转换

  • 十进制转十六进制: 65(十进制) = 0x41 = A
  • 十六进制转二进制: 0x41 = 0100 0001
  • 十六进制转 HTML 实体: AA 都渲染为 A

常见问题

ASCII 是 7 位编码,因此一个字节的第八位可留给奇偶校验或扩展。128-255 属于“扩展 ASCII“变体(Latin-1、Windows-1252、MacRoman 等),它们彼此不兼容,这也是 Unicode 胜出的部分原因。

LF(0x0A)向下移动一行;CR(0x0D)把光标移回第零列。Unix 的换行符只有 LF;早期 Mac 曾经只用 CR;Windows 和 HTTP 头部使用 CR 后跟 LF(CRLF)。不匹配是系统间文本出现双倍行距或挤在一起的典型原因。

ASCII 大写字母位于 65-90,小写字母位于 97-122,两者正好相差 0x20。代码必须先确认某个字节确实表示 ASCII 字母,之后才能通过设置、清除或翻转 0x20 位来改变大小写。对任意字节直接执行 XOR 0x20 并不安全,因为数字、标点和控制值也会被改变。

有:文本文件中的 LF 和 CR,源代码和终端中的 HT 和 FF,ANSI 颜色序列中的 ESC,终端铃声和提醒中的 BEL。NUL 仍用于终止 C 字符串。其余大多是电传打字机时代遗留。

相关工具