十六进制转文本转换器
这个十六进制转文本转换器使用 UTF-8 字符编码,在十六进制字节值和可读文本之间相互转换。粘贴十六进制代码(带或不带空格、0x 前缀或短横线)以解码为文本,或输入文本以查看其十六进制表示。
十六进制转文本转换器
将文本转换为十六进制,或将十六进制字符串解码回可读文本
常见问题
什么是十六进制?
十六进制(hex)是一种以16为基数的数字系统,使用0-9和A-F来表示值。每个十六进制数字代表四个二进制位,因此两个十六进制数字代表一个字节(8位)。例如,十六进制值"FF"等于十进制255和二进制11111111。十六进制在计算中被广泛使用,因为它提供了一种紧凑、便于人类阅读的表示二进制数据的方式。
十六进制如何表示文本?
文本在计算机中使用ASCII和UTF-8等字符编码方案以字节序列存储。每个字符被分配一个数值码点,然后编码为一个或多个字节。文本的十六进制表示就是每个字节的十六进制值。例如,ASCII中的"Hello"是48 65 6c 6c 6f——其中48是"H"的十六进制值(十进制72),65是"e"(十进制101),依此类推。
ASCII和UTF-8有什么区别?
ASCII是一种7位编码,定义了128个字符(0-127),涵盖英文字母、数字、标点和控制字符。UTF-8是一种与ASCII向后兼容的可变宽度编码——前128个字符完全相同。但UTF-8可以使用1到4字节编码所有Unicode字符,支持每种世界文字、符号和表情符号。所有有效的ASCII文本也是有效的UTF-8。
0x前缀是什么意思?
"0x"前缀是C、C++、Java、JavaScript和Python等编程语言中用于表示数字以十六进制(基数16)书写的约定。例如,0x41表示十六进制值41(十进制65,即字母"A")。前缀本身没有数值——它只是告诉编译器或解释器将后面的数字解析为基数16而不是基数10。
为什么使用十六进制而不是二进制或十进制?
十六进制在可读性和与二进制数据的对齐之间取得了理想的平衡。每个十六进制数字精确映射到4位,因此一个字节始终是两个十六进制数字(00到FF)。二进制对人类阅读过于冗长(一个字节是8位数字),而十进制与字节边界不整洁对齐。十六进制使读取内存地址、颜色代码、MAC地址、哈希值和其他面向字节的数据变得容易。
如何手动将十六进制转换为文本?
手动将十六进制转换为文本:(1)将十六进制字符串拆分为两位一组——每对代表一个字节。(2)将每对十六进制转换为十进制值(例如,十六进制48 = 4×16+8 = 72十进制)。(3)在ASCII表中查找十进制值对应的字符(72="H")。(4)组合所有字符形成文本。对于UTF-8多字节字符,多个十六进制对组合成一个字符。
此工具可以处理Unicode和表情符号吗?
是的,本转换器完全支持UTF-8编码,包括所有Unicode字符——拉丁文字、CJK字符、阿拉伯文、西里尔文、数学符号和表情符号。多字节字符将产生多个十六进制字节对。例如,表情符号"😀"在UTF-8中编码为4字节:f0 9f 98 80。字符细分表单独显示多字节字符的每个字节。
如何读取十六进制转储?
十六进制转储以十六进制字节值行以及对应的ASCII表示来显示文件或内存内容。每行通常显示偏移量(内存地址)、16个十六进制字节值和对应的可打印字符(不可打印字节显示为点)。例如:"00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 |Hello World!|"。xxd、hexdump和od等工具在命令行中生成十六进制转储。
如何在Python或JavaScript中将十六进制转换为文本?
在Python中,使用bytes.fromhex("48656c6c6f").decode("utf-8")得到"Hello"。将文本转换为十六进制:"Hello".encode("utf-8").hex()返回"48656c6c6f"。在JavaScript中,十六进制转文本:hex.match(/.{2}/g).map(b => String.fromCharCode(parseInt(b, 16))).join("")。文本转十六进制:[...text].map(c => c.charCodeAt(0).toString(16).padStart(2, "0")).join("")。
十六进制转文本和十六进制转十进制有什么区别?
十六进制转文本使用ASCII或UTF-8编码将十六进制字节值转换为可读字符(例如,"48 65 6c 6c 6f"变为"Hello")。十六进制转十进制将十六进制数转换为其基数10的等值(例如,"FF"变为255)。十六进制转文本将十六进制解释为字符编码,而十六进制转十进制是纯数学的进制转换。
关于十六进制转文本转换器
十六进制转文本转换器是一款在人类可读文本与十六进制字节表示之间相互转换的实用工具。它基于 UTF-8 编码将文本中的每个字符编码为 hex 值,并能将 hex 字符串解码回可读文本。对于开发者、网络工程师,以及任何需要处理二进制数据、内存转储或底层协议的人,该工具不可或缺。
如何使用十六进制转文本转换器
- 选择"文本转十六进制"标签页将文本转换为十六进制,或选择"十六进制转文本"标签页将 hex 解码回文本
- 在文本框中输入或粘贴内容
- 在"文本转十六进制"模式下,选择你偏好的分隔格式(空格、无分隔、0x 前缀或逗号)
- 转换器实时处理输入,结果即时显示
- 查看字符拆解表,获取每个字节的详细分析
- 点击复制按钮将结果复制到剪贴板
什么是十六进制?
十六进制(hex)是一种以 16 为基数的数字系统,使用十六个不同符号:数字 0–9 表示零到九,字母 A–F(或 a–f)表示十到十五。每个 hex 数字恰好表示四个二进制位(半字节),是一种表达二进制数据既紧凑又便于阅读的方式。两个 hex 数字合在一起表示一个字节(8 位),取值范围为 00(0)到 FF(255)。
十六进制如何表示文本(ASCII / UTF-8)
计算机使用字符编码方案以字节序列存储文本。在 ASCII 中,每个字符映射到 0 到 127 之间的单个字节值。例如,字母"A"存储为字节值 65,即 hex 中的 41。UTF-8 在 ASCII 基础上扩展,支持所有 Unicode 字符:ASCII 字符仍占一个字节,其他字符使用两到四个字节。文本的 hex 表示就是各字节 hex 值的顺序排列。
常用字符十六进制对照表
以下是常用字符及其十六进制、十进制和二进制的对应值:
| 字符 | Hex | 十进制 | 二进制 |
|---|---|---|---|
| 空格 | 20 | 32 | 00100000 |
| 0 | 30 | 48 | 00110000 |
| 9 | 39 | 57 | 00111001 |
| A | 41 | 65 | 01000001 |
| Z | 5a | 90 | 01011010 |
| a | 61 | 97 | 01100001 |
| z | 7a | 122 | 01111010 |
| ! | 21 | 33 | 00100001 |
| @ | 40 | 64 | 01000000 |
| # | 23 | 35 | 00100011 |
| \ | 5c | 92 | 01011100 |
| / | 2f | 47 | 00101111 |
ASCII 参考表
可打印 ASCII 字符的 hex 范围为 20(空格)到 7e(波浪号)。控制字符占 00–1f 和 7f。以下是完整的可打印范围:
| 类别 | Hex 范围 | 字符 |
|---|---|---|
| 数字 | 30–39 | 0 1 2 3 4 5 6 7 8 9 |
| 大写字母 | 41–5a | A B C D ... X Y Z |
| 小写字母 | 61–7a | a b c d ... x y z |
| 符号 | 20–2f, 3a–40, 5b–60, 7b–7e | 空格、标点、括号等 |
常见应用场景
- 调试 — 检查网络数据包、文件内容或内存转储中的原始字节值,诊断编码问题
- 网络分析 — 读取和解析从网络流量中捕获的 hex 数据(TCP/UDP 载荷、HTTP 正文)
- 密码学 — hex 是哈希摘要(SHA-256、MD5)、加密密钥和密文输出的标准表示方式
- 编程开发 — 在 hex 字面量和文本之间转换,用于字符串操作、颜色代码(如 #FF5733)和字节级操作
- 数据格式 — 解码 JSON、XML、数据库 BLOB 和序列化数据结构中的 hex 编码字段
- 嵌入式系统 — 处理以 hex 格式存储的固件转储、EEPROM 内容和串行通信数据
使用 Hex 的技巧
- 每个字节始终由恰好两个 hex 数字表示(例如
0a而非a) - hex 不区分大小写:
4a和4A表示相同的字节值(十进制 74) 0x前缀是 C、JavaScript、Python 等编程语言中表示 hex 字面量的通用约定- 对于多字节 UTF-8 字符(带重音字母、CJK 字符、表情符号),每个字符会产生多个 hex 字节对
- 解码时请确保 hex 字符串的位数为偶数——奇数位数表示数据不完整