ASCII 码完整对照表(0-127)
字符 · 十进制 / 十六进制 / 八进制 / 二进制 · 点击复制字符
0-127/0-255 完整对照
字符 · 十进制 / 十六进制 / 八进制 / 二进制 · 点击复制字符
· 控制字符(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 参赛者在处理隐写题或逆向题时,常遇到 ASCII 码偏移(如 ROT13)、进制转换(如二进制转字符)或混合编码(如 Base64 嵌套)。本工具提供 0-127 完整对照,支持按字符、十进制、十六进制、二进制四种方式交叉检索,快速验证编码规律。
| 维度 | 本工具 | 竞品 A (asciitable.com) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器,零上传 | 上传到服务器 | 依赖工作人员 |
| 处理速度 | 1 秒内 | 5-10 秒 | 数小时 |
| 离线可用 | 完全离线 | 需联网 | 需联网 |
| 覆盖范围 | 0-127/0-255 完整对照 | 0-127 基础对照 | 0-127 基础对照 |
| 收费 | 免费 | 免费 | 免费 |
| 注册 | 无需注册 | 无需注册 | 无需注册 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 65 | A (十进制: 65, 十六进制: 41, 二进制: 01000001) | 典型场景:大写字母 A 的 ASCII 码 |
| 97 | a (十进制: 97, 十六进制: 61, 二进制: 01100001) | 典型场景:小写字母 a 的 ASCII 码 |
| 48 | 0 (十进制: 48, 十六进制: 30, 二进制: 00110000) | 典型场景:数字 0 的 ASCII 码 |
| 0 | NUL (十进制: 0, 十六进制: 00, 二进制: 00000000) | 边界 case:ASCII 表第一个控制字符 |
| 127 | DEL (十进制: 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)常被误认为没有对应字符 |
输入 65 查找字符,期望得到 'A',但误以为 0x41 是 41在 ASCII 表中,十进制 65 对应 'A',十六进制 0x41 也对应 'A'。输入 65 或 0x41 均可ASCII 表通常同时标注十进制(Dec)和十六进制(Hex)两列。0x41 是十六进制写法,数值等于十进制 65,不是 41。
在表格中看到 0x0A(LF)显示为空白或小图标,以为该位置是空字符或缺失0x0A 是换行符(Line Feed),属于控制字符,不可打印。表格中通常用缩写 'LF' 或符号表示ASCII 0-31 和 127 是控制字符(如 NUL、CR、LF),没有可见字形。32-126 才是可打印字符(字母、数字、标点)。
输入十进制 200(0xC8),期望得到标准字母,但表格显示为空或乱码标准 ASCII 只定义 0-127(7-bit)。128-255 是扩展 ASCII,不同编码(如 ISO-8859-1、CP437)定义不同本工具 0-127 为国际标准(ANSI X3.4-1968),128-255 为扩展区域,具体字符依赖系统编码,非通用标准。
认为 'é' 的 ASCII 码是 130(十进制),但表格 130 位置显示的是其他字符'é' 是 Unicode 字符 U+00E9,不在 ASCII 范围内。ASCII 只包含英语基本字母和符号ASCII 仅 128 个字符,不含重音字母、中文、emoji。'é' 在 Latin-1 编码中是 233(0xE9),不是标准 ASCII。
输入 01000001(二进制)期望得到 'A',但表格将其解析为十进制 1000001在表格中查找 'A' 的二进制表示应为 01000001(十进制 65),而不是输入二进制数本身ASCII 表通常提供二进制列作为参考,但输入框默认接受十进制或十六进制数值,不自动识别二进制格式。
在编程中直接输出 ASCII 码 7(BEL),期望看到文字 'BEL',结果听到一声蜂鸣或看到乱码在代码中应使用转义序列如 '\a'(C语言)或 chr(7)(Python)表示控制字符,而不是直接输出数值控制字符(如 BEL、BS、TAB)在终端或文本中有特殊行为,不会显示为可见文字。查表时注意区分。
认为 '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)不适用此映射。
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 | EOTpackage 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 | EOT9 个高频疑问
「HTTP / 网络速查」下的其他工具