ASCII 表

0-127/0-255 完整对照

413 次访问

ASCII 码完整对照表(0-127)

字符 · 十进制 / 十六进制 / 八进制 / 二进制 · 点击复制字符

说明

· 控制字符(0-31 + 127):不可打印,用于设备控制(如 \n=10 换行, \t=9 制表)

· 可打印(32-126):空格 / 标点 / 数字 / 字母

· ASCII = American Standard Code for Information Interchange,1963 年 ANSI 标准

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

💻

程序调试查码

开发者在调试网络协议、解析二进制数据或编写字符处理逻辑时,经常需要快速确认某个字节值对应的 ASCII 字符。本工具提供 0-127 完整对照表,支持按十进制、十六进制、二进制反向查找,避免在代码里写死魔数或临时翻文档,提升调试效率。

🔧

嵌入式开发对照

嵌入式工程师在编写 UART 通信协议、LCD 显示驱动或键盘扫描程序时,需频繁查阅 ASCII 码与控制字符(如 0x0D 回车、0x0A 换行)的对应关系。本工具将 0-31 控制字符与 32-127 可打印字符分区域呈现,一眼定位 DEL、NUL 等特殊码位,减少手册翻阅时间。

📡

串口数据解析

硬件工程师用串口调试助手抓包时,收到的是一串十六进制数。本工具支持将 0x41 快速转为 'A'、0x0D 转为 CR,也能反向将键盘输入的字符转成对应字节值,帮助在协议分析时区分数据帧中的命令码与有效载荷。

🎓

计算机教学演示

教师在讲解字符编码、ASCII 表结构或二进制表示时,需要一张清晰的分区对照表。本工具按 0-31 控制区、32-64 符号区、65-90 大写字母区、97-122 小写字母区等逻辑块分组展示,配合十进制/十六进制/二进制三栏对照,学生可直观理解编码规律。

🔐

CTF 编码转换

CTF 参赛者在处理隐写题或逆向题时,常遇到 ASCII 码偏移(如 ROT13)、进制转换(如二进制转字符)或混合编码(如 Base64 嵌套)。本工具提供 0-127 完整对照,支持按字符、十进制、十六进制、二进制四种方式交叉检索,快速验证编码规律。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (asciitable.com)传统方法
数据隐私纯浏览器,零上传上传到服务器依赖工作人员
处理速度1 秒内5-10 秒数小时
离线可用完全离线需联网需联网
覆盖范围0-127/0-255 完整对照0-127 基础对照0-127 基础对照
收费免费免费免费
注册无需注册无需注册无需注册

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
65A (十进制: 65, 十六进制: 41, 二进制: 01000001)典型场景:大写字母 A 的 ASCII 码
97a (十进制: 97, 十六进制: 61, 二进制: 01100001)典型场景:小写字母 a 的 ASCII 码
480 (十进制: 48, 十六进制: 30, 二进制: 00110000)典型场景:数字 0 的 ASCII 码
0NUL (十进制: 0, 十六进制: 00, 二进制: 00000000)边界 case:ASCII 表第一个控制字符
127DEL (十进制: 127, 十六进制: 7F, 二进制: 01111111)边界 case:0-127 范围最大值,删除控制字符
128€ (十进制: 128, 十六进制: 80, 二进制: 10000000)边界 case:0-255 扩展 ASCII 起始值,欧元符号
255ÿ (十进制: 255, 十六进制: FF, 二进制: 11111111)边界 case:0-255 范围最大值,拉丁小写字母 y 带分音符
32空格 (十进制: 32, 十六进制: 20, 二进制: 00100000)易错 case:空格(32)常被误认为没有对应字符

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 混淆十进制与十六进制值

错误
输入 65 查找字符,期望得到 'A',但误以为 0x41 是 41
修复
在 ASCII 表中,十进制 65 对应 'A',十六进制 0x41 也对应 'A'。输入 65 或 0x41 均可

ASCII 表通常同时标注十进制(Dec)和十六进制(Hex)两列。0x41 是十六进制写法,数值等于十进制 65,不是 41。

2. 混淆控制字符与可打印字符

错误
在表格中看到 0x0A(LF)显示为空白或小图标,以为该位置是空字符或缺失
修复
0x0A 是换行符(Line Feed),属于控制字符,不可打印。表格中通常用缩写 'LF' 或符号表示

ASCII 0-31 和 127 是控制字符(如 NUL、CR、LF),没有可见字形。32-126 才是可打印字符(字母、数字、标点)。

3. 误以为 0-127 以外也有标准字符

错误
输入十进制 200(0xC8),期望得到标准字母,但表格显示为空或乱码
修复
标准 ASCII 只定义 0-127(7-bit)。128-255 是扩展 ASCII,不同编码(如 ISO-8859-1、CP437)定义不同

本工具 0-127 为国际标准(ANSI X3.4-1968),128-255 为扩展区域,具体字符依赖系统编码,非通用标准。

4. 把 ASCII 码与 Unicode 码点直接等同

错误
认为 'é' 的 ASCII 码是 130(十进制),但表格 130 位置显示的是其他字符
修复
'é' 是 Unicode 字符 U+00E9,不在 ASCII 范围内。ASCII 只包含英语基本字母和符号

ASCII 仅 128 个字符,不含重音字母、中文、emoji。'é' 在 Latin-1 编码中是 233(0xE9),不是标准 ASCII。

5. 混淆二进制与十进制输入

错误
输入 01000001(二进制)期望得到 'A',但表格将其解析为十进制 1000001
修复
在表格中查找 'A' 的二进制表示应为 01000001(十进制 65),而不是输入二进制数本身

ASCII 表通常提供二进制列作为参考,但输入框默认接受十进制或十六进制数值,不自动识别二进制格式。

6. 忽略非打印字符的转义表示

错误
在编程中直接输出 ASCII 码 7(BEL),期望看到文字 'BEL',结果听到一声蜂鸣或看到乱码
修复
在代码中应使用转义序列如 '\a'(C语言)或 chr(7)(Python)表示控制字符,而不是直接输出数值

控制字符(如 BEL、BS、TAB)在终端或文本中有特殊行为,不会显示为可见文字。查表时注意区分。

7. 混淆大小写字母的 ASCII 码

错误
认为 'a' 和 'A' 的 ASCII 码相同,都是 65
修复
'A' 是 65(0x41),'a' 是 97(0x61)。两者相差 32(0x20)

ASCII 表中大写字母(65-90)和小写字母(97-122)是分开编码的,相差恰好 32。这是早期键盘设计的历史遗留。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

十进制 = d_n × 128 + d_{n-1} × 64 + … + d_1 × 2 + d_0

变量说明

  • 十进制 — ASCII 码对应的十进制数值(0-255)
  • d_n … d_0 — 二进制位(0 或 1),从高位到低位

示例

字符 'A' 的 ASCII 码十进制为 65。二进制表示为 01000001,即 0×128 + 1×64 + 0×32 + 0×16 + 0×8 + 0×4 + 0×2 + 1×1 = 64 + 1 = 65。

适用范围

适用于 ASCII 标准(ANSI X3.4-1986 / ISO 646)定义的 0-127 基本字符集,以及扩展 ASCII(ISO 8859-1)的 128-255 编码。非 ASCII 字符(如中文、Emoji)不适用此映射。

原理图

输入字符或十进制值本地映射查询(0–127 / 0–255)纯前端,无网络请求显示对照表十进制/十六进制HTML实体/Unicode映射表示例(ASCII 0–127)十进制十六进制字符HTML实体Unicode描述650x41AAU+0041大写字母A970x61aaU+0061小写字母a
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

# 生成 0-127 标准 ASCII 表(不可打印字符用控制符名称代替)
import string

# 控制字符名称映射(0-31, 127)
ctrl_names = {
    0: "NUL", 1: "SOH", 2: "STX", 3: "ETX", 4: "EOT", 5: "ENQ",
    6: "ACK", 7: "BEL", 8: "BS",  9: "HT",  10: "LF", 11: "VT",
    12: "FF", 13: "CR", 14: "SO", 15: "SI", 16: "DLE", 17: "DC1",
    18: "DC2", 19: "DC3", 20: "DC4", 21: "NAK", 22: "SYN", 23: "ETB",
    24: "CAN", 25: "EM", 26: "SUB", 27: "ESC", 28: "FS", 29: "GS",
    30: "RS", 31: "US", 127: "DEL"
}

print("Dec | Hex | Char")
print("-" * 20)
for code in range(128):
    if code in ctrl_names:
        char = ctrl_names[code]
    else:
        char = chr(code)
    print(f"{code:3d} | 0x{code:02X} | {char}")

# 输出示例(前5行):
# Dec | Hex | Char
# --------------------
#   0 | 0x00 | NUL
#   1 | 0x01 | SOH
#   2 | 0x02 | STX
#   3 | 0x03 | ETX
#   4 | 0x04 | EOT
package main

import "fmt"

// 控制字符名称
var ctrlNames = map[int]string{
	0: "NUL", 1: "SOH", 2: "STX", 3: "ETX", 4: "EOT", 5: "ENQ",
	6: "ACK", 7: "BEL", 8: "BS", 9: "HT", 10: "LF", 11: "VT",
	12: "FF", 13: "CR", 14: "SO", 15: "SI", 16: "DLE", 17: "DC1",
	18: "DC2", 19: "DC3", 20: "DC4", 21: "NAK", 22: "SYN", 23: "ETB",
	24: "CAN", 25: "EM", 26: "SUB", 27: "ESC", 28: "FS", 29: "GS",
	30: "RS", 31: "US", 127: "DEL",
}

func main() {
	fmt.Println("Dec | Hex | Char")
	fmt.Println("--------------------")
	for code := 0; code < 128; code++ {
		char := string(rune(code))
		if name, ok := ctrlNames[code]; ok {
			char = name
		}
		fmt.Printf("%3d | 0x%02X | %s\n", code, code, char)
	}
}

// 输出示例:
// Dec | Hex | Char
// --------------------
//   0 | 0x00 | NUL
//   1 | 0x01 | SOH
//   2 | 0x02 | STX
//   3 | 0x03 | ETX
//   4 | 0x04 | EOT
// 生成 0-127 ASCII 表(浏览器/Node.js 均可运行)
const ctrlNames = {
    0: 'NUL', 1: 'SOH', 2: 'STX', 3: 'ETX', 4: 'EOT', 5: 'ENQ',
    6: 'ACK', 7: 'BEL', 8: 'BS',  9: 'HT',  10: 'LF', 11: 'VT',
    12: 'FF', 13: 'CR', 14: 'SO', 15: 'SI', 16: 'DLE', 17: 'DC1',
    18: 'DC2', 19: 'DC3', 20: 'DC4', 21: 'NAK', 22: 'SYN', 23: 'ETB',
    24: 'CAN', 25: 'EM', 26: 'SUB', 27: 'ESC', 28: 'FS', 29: 'GS',
    30: 'RS', 31: 'US', 127: 'DEL'
};

console.log('Dec | Hex | Char');
console.log('-'.repeat(20));
for (let code = 0; code < 128; code++) {
    const char = ctrlNames[code] !== undefined ? ctrlNames[code] : String.fromCharCode(code);
    console.log(`${String(code).padStart(3)} | 0x${code.toString(16).toUpperCase().padStart(2, '0')} | ${char}`);
}

// 输出示例:
// Dec | Hex | Char
// --------------------
//   0 | 0x00 | NUL
//   1 | 0x01 | SOH
//   2 | 0x02 | STX
//   3 | 0x03 | ETX
//   4 | 0x04 | EOT

常见问题

9 个高频疑问

这个 ASCII 表是 0-127 还是 0-255?怎么切换?
工具默认显示 0-127(标准 ASCII,包含控制字符、数字、大小写字母和常用符号),页面顶部或表格上方有一个切换开关(或按钮),点击后可切换到 0-255(扩展 ASCII,包含西欧语言字符、制表符、图形符号等)。切换后表格行数从 128 行变为 256 行,每行的十进制、十六进制、八进制、字符和 HTML 实体都会同步更新。
为什么我看到的某些字符显示为方框或乱码?
扩展 ASCII(128-255)中的字符依赖于当前操作系统和浏览器的字体支持。如果系统字体中没有对应字形(例如某些制表符、特殊图形符号),浏览器会显示方框(□)或问号(?)。这并非工具数据错误,而是字体缺失。可以尝试更换浏览器字体(如设置为「Courier New」或「Lucida Console」)或在支持 Unicode 的现代浏览器中查看,大部分字符都能正常渲染。
表格里的十进制、十六进制、八进制和 HTML 实体,哪个是标准编码?
标准 ASCII 编码的核心是十进制(0-127)和对应的字符。十六进制(0x00-0x7F)是程序员最常用的表示方式,尤其在 C 语言和网络协议中。八进制(000-177)在 Unix 文件权限和旧系统中常见。HTML 实体(如 `&nbsp;` 或 `&#160;`)仅供 Web 开发者快速插入特殊字符,不是 ASCII 标准的一部分。本工具同时列出这四种格式,方便不同场景直接复制使用。
这个表的数据来源是什么?会不会有错误?
数据基于 ANSI X3.4-1986(R1997)标准和 ISO/IEC 646 国际标准,这是 ASCII 编码的官方定义。0-127 部分全行业一致,无歧义。0-255 部分采用 IBM CP437(DOS 时代最常用的扩展 ASCII)作为参考,这也是大多数在线 ASCII 表的通用选择。如果发现字符与本地系统显示不一致,通常是字体问题(见第二条),而非数据错误。
控制字符(0-31)那一栏显示的都是缩写,看不懂怎么办?
表格中控制字符列显示的是标准缩写(如 NUL、SOH、STX、ETX),鼠标悬停在缩写上会弹出完整英文名称和中文说明(例如「NUL - Null - 空字符」)。如果移动端不方便悬停,可以点击该行,页面会展开详细描述,包括该字符在串行通信、终端控制或打印机中的历史用途。日常编程中大部分控制字符已很少直接使用,了解 NUL(字符串结束)、LF(换行)、CR(回车)、ESC(转义)即可。
为什么我查到的某些字符(比如欧元符号 €)在 0-255 里找不到?
欧元符号(€)是 Unicode 字符(U+20AC),不属于 ASCII 或扩展 ASCII 范围。ASCII 128-255 部分(如 CP437)只包含西欧语言字符、制表符和图形符号,没有欧元符号(它在 Windows-1252 编码中位于 0x80)。本工具严格遵循 ASCII 标准,不混入 Unicode。如果需要查找 €、™、© 等符号,请使用 Unicode 码表工具。
这个工具需要联网吗?能离线用吗?
完全离线可用。所有 ASCII 数据(0-255 的十进制、十六进制、八进制、字符对照)都在页面本身的 JavaScript 中硬编码,不依赖任何后端接口或 CDN 资源。打开一次页面后,浏览器会将 HTML/CSS/JS 全部缓存到本地,断网后刷新仍然可以正常使用。可以放心在无网络环境(如内网开发机、飞机上)查阅。
我想把整个 ASCII 表导出成 CSV 或打印出来,工具有提供吗?
工具界面没有直接的「导出 CSV」按钮,但可以通过浏览器自带功能实现:在表格区域右键 →「打印」(或 Ctrl+P),选择「另存为 PDF」即可生成可打印的 PDF 版本。如果需要 CSV 格式,可以全选表格(Ctrl+A)、复制(Ctrl+C)、粘贴到 Excel 或 Google Sheets 中,表格的列对齐会保留。0-127 和 0-255 两种视图导出的行数不同,导出前确认当前视图。
为什么有的在线 ASCII 表只显示可打印字符,不显示控制字符?
很多工具为了界面简洁,默认隐藏了控制字符(0-31 和 127),只显示空格、标点、数字、字母和符号(32-126)。本工具默认显示全部 0-127(含控制字符),因为控制字符在串口调试、终端模拟、网络协议分析中仍有实际用途。如果只关心可打印字符,可以在表格上方的过滤输入框中输入「32-126」或勾选「仅显示可打印字符」,表格会自动筛选。
选择 打开 +新窗口 esc关闭