上传文件
  1. base64hub
  2. 其他进制编码
  3. 文本转 Hex

文本转 Hex:字符串和 ASCII 转十六进制

输入或粘贴文本,查看它的十六进制字节:Hello 是 48656c6c6f。可以选择字符集、字母大小写,以及空格、:、0x 或 \x 等分隔符。

免费 无需注册,不限次数 本地 不上传任何内容 \x 转义可直接用于 C 和 Python 字符串 更新于 2026年10月27日
输入 0字节 0 B输出 0

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何把文本转换为十六进制

  1. 在 输入 · 文本 中输入或粘贴文本。十六进制会随着输入显示在 输出 · Hex 中。
  2. 输入下方的 字符集 决定字符如何变成字节。除非接收方系统需要其他字符集,否则保持 UTF-8 即可。
  3. 在输出下方选择 大小写(小写或大写)、分隔符(无、空格、:、0x 或 \x)以及 每行字节数(无、16 或 32)。
  4. 点击 复制输出 或 下载 获取结果。Hex → 文本 切换可以把它还原为文本,Hex 转文本 也可以。

输出样式

分隔符和大小写选项覆盖了十六进制常被粘贴的场景。以文本 Hi! 为例:

设置输出适用场景
无,小写486921哈希、URL、JSON
空格,大写48 69 21十六进制编辑器、协议文档
:48:69:21指纹、MAC 地址风格的列表
0x0x48 0x69 0x21C 和汇编源码
\x\x48\x69\x21C、Python、Bash printf 中的字符串转义

\x 形式可以直接放进字符串字面量:在 Bash 中 printf '\x48\x69\x21' 会输出 Hi!。每行字节数 会把较长的输出按每行 16 或 32 字节分开,便于用肉眼数偏移量。

一个字符,一个或多个字节

ASCII 字符各占一个字节,UTF-8 中它们保持不变,所以对英文文本来说两种字符集给出的十六进制相同。其他字符则取决于字符集:

文本UTF-8ISO-8859-1UTF-16LE
A414141 00
éc3 a9e9e9 00
€e2 82 ac不支持ac 20
👋f0 9f 91 8b不支持3d d8 4b dc

字符集无法表示的字符会被替换为 ?,状态栏会显示替换了多少个。如果另一个系统给出的十六进制与你的不一致,请先检查双方使用的字符集。

找出看不见的字符

转换为十六进制是查看屏幕上“什么都看不到”的字符最快的办法。两个显示起来一模一样的字符串,字节可能不同:

UTF-8 中的十六进制字符
20普通空格
c2 a0不换行空格,常见于从网页和 Word 复制来的文本
e2 80 8b零宽空格
ef bb bf文件开头的字节顺序标记(BOM)
0d 0aWindows 换行(Linux 和 macOS 上只有 0a)

如果某个密码、API 密钥或配置值“明明正确却被拒绝”,把它粘贴到这里,将 分隔符 设为空格,查找上面这些字节。用 文本转 Base64 编码文本之前,同样的检查也有帮助:Base64 会保留每一个看不见的字节,它们会原封不动地进入编码结果。

在代码中把文本转为十六进制

"Hi!".encode("utf-8").hex()       # '486921'
"Hi!".encode("utf-8").hex(" ")    # '48 69 21'  (separator argument, Python 3.8+)
"é".encode("latin-1").hex()       # 'e9'
const hex = Array.from(new TextEncoder().encode("café"),
  b => b.toString(16).padStart(2, "0")).join(" ");
// '63 61 66 c3 a9'

TextEncoder 始终生成 UTF-8。对应的 Base64 调用见 JavaScript 和 Python 页面。

常见问题

如何把字符串转换为十六进制?

把字符串粘贴到输入框。每个字符会按所选字符集变成对应的字节值,每个字节两位十六进制数字。在 Python 中等价于 "Hello".encode("utf-8").hex()。

"Hello" 的十六进制是什么?

在 ASCII 和 UTF-8 中都是 48 65 6c 6c 6f,对普通英文字母来说两者一致。在 UTF-16LE 中是 48 00 65 00 6c 00 6c 00 6f 00。

为什么 é 会变成两个字节 c3 a9?

UTF-8 用 2 到 4 个字节编码 U+007F 以上的每个字符。如果需要单字节的 e9,把 字符集 设为 ISO-8859-1(Latin-1)或 Windows-1252。

怎样让每个字节前面都带 0x?

把 分隔符 设为 0x,输出就是 0x48 0x65 0x6c 0x6c 0x6f。如果需要完整的 C 或 Rust 数组字面量,Base64 转字节数组 还会连声明一起写出来。