Base64 Files
Hex · Base64 · Base64URL

Hex 转 Base64

将十六进制字符串即时转换为 Base64 或 Base64URL。自动识别并清理 0x 前缀、冒号、空格等分隔符,直接粘贴任意格式的十六进制数据。

转换结果

典型应用场景

加密摘要

HMAC-SHA256、MD5 等哈希函数输出为 Hex,转 Base64 后适合放入 Authorization 头部或 JWT。

API 签名

大多数签名算法(AWS SigV4、Stripe webhook)需要将 Hex 格式的 HMAC 转为 Base64 发送。

二进制调试

Wireshark、tcpdump 抓包数据以 Hex 输出,转 Base64 后便于在 API 请求中传递原始字节。

Buffer 转换

Node.js Buffer.from(hex, "hex").toString("base64") 的在线等价操作,无需写代码。

低层协议

TLS 握手、证书指纹、公钥 Hex 转 Base64 后可用于 PEM 格式或 HTTPS 证书固定(Pinning)。

颜色编码

将 RGB 颜色 Hex 值(如 #1591DC)转为 Base64,用于特定颜色编码或数据压缩场景。

转换原理

十六进制字符串本质上是二进制字节的文字表示:每 2 个十六进制字符对应 1 个字节(8 位)。例如 48 是 ASCII 字符 H 的十六进制值。

转换步骤为:Hex 字符串 → 字节数组 → Base64 编码。Base64 将每 3 个字节编码为 4 个可打印字符,因此 32 字节的 SHA-256 哈希 转为 Base64 后得到 44 个字符(含 1 个填充 =)。

所有计算均在浏览器本地完成,数据不会上传到服务器。

支持的输入格式

纯字符串最常见,Wireshark / OpenSSL 默认输出
e3b0c44298fc1c14…
空格分隔xxd、hexdump 工具输出
48 65 6c 6c 6f
冒号分隔OpenSSL 证书指纹格式
e3:b0:c4:42:98:fc
0x 前缀C / Go / JavaScript 常量格式
0x48 0x65 0x6c
逗号分隔C 数组 / Python bytes 输出
48, 65, 6c, 6c

常见问题

Hex 和 Base64 的区别是什么?

Hex(十六进制)使用 16 个字符(0–9、A–F)表示二进制数据,每个字节需要 2 个字符,输出大小是原始字节的 2 倍。Base64 使用 64 个字符,每 3 个字节编码为 4 个字符,输出约为原始大小的 1.33 倍,更紧凑,适合在 JSON、HTML、URL 等文本协议中传输。

SHA-256 哈希可以转成 Base64 吗?

可以。SHA-256 输出的是 32 字节(256 位)的二进制数据,通常以 64 位十六进制字符串表示。将其转换为 Base64 会得到一个 44 字符的字符串(包含 1 个填充 =)。许多 API 和签名验证场景使用 Base64 格式的哈希值,例如 HMAC-SHA256 签名。

Base64URL 和 Base64 有什么区别?

Base64URL 将标准 Base64 中的 + 替换为 -,/ 替换为 _,并去除末尾的 = 填充字符,使其可以安全用于 URL 参数、HTTP 头部和 JWT 令牌中,无需额外的 URL 编码。

什么是 0x 前缀,工具如何处理它?

0x 是十六进制数字的常见前缀,源自 C 语言,用于区分十进制和十六进制。例如 0x48 表示十进制的 72。本工具会自动识别并去除 0x 前缀,支持 0x48 0x65 0x6c 这类格式直接粘贴转换。

为什么转换的 UTF-8 文本显示乱码?

如果十六进制数据是图片、哈希、加密密钥等二进制数据,解码为 UTF-8 文本会出现无法显示的字符(替换为 �)。UTF-8 输出适合原始数据本身是文本(如 JSON、HTML)编码为十六进制的情况。

工具支持哪些十六进制格式?

工具自动识别并清理多种常见格式:纯字符串(e3b0c4…)、空格分隔(48 65 6c)、冒号分隔(e3:b0:c4)、逗号分隔(48,65,6c)以及带 0x 前缀(0x48 0x65)的格式。无需手动预处理,直接粘贴即可。