Base64 和 Hex 编码有什么区别?各自该用在哪里
Base64 每 3 字节变 4 字符、膨胀 33%,Hex 每字节变 2 字符、膨胀 100%。讲清两种编码的原理、可读性、使用场景与选择建议。
一、编码的本质:只是换一种写法
Base64 和 Hex(十六进制)都是编码而不是加密——它们只是把二进制数据换一种字符写法,任何人都能无损还原,没有任何保密性。这点必须先明确。
- Hex:每 4 个比特映射成一个字符(0-9、a-f),1 个字节正好 2 个字符。
- Base64:每 6 个比特映射成一个字符(A-Z、a-z、0-9、+、/),3 个字节(24 bit)正好 4 个字符。
二、膨胀率对比:Base64 更省空间
同样一段二进制数据,两种编码后的长度差别很大:
- Hex 膨胀 100%:1 字节 → 2 字符,数据体积直接翻倍。
- Base64 膨胀约 33%:3 字节 → 4 字符,不足 3 字节用
=补齐。
例如 16 字节的 UUID:Hex 写法 32 个字符,Base64 写法只有 22 个字符。在 URL 长度敏感、存储体积敏感的场景,Base64 明显更划算。
三、可读性与调试:Hex 更友好
Hex 的优势是字节对齐:每 2 个字符一定是 1 个字节,肉眼看 Hex 就能直接读出每个字节的值。
- 看内存转储(hexdump)、文件头魔数(如
FF D8 FF是 JPEG)、哈希值,业界惯例都是 Hex。 - Base64 的 4/3 对齐让人无法直观对应到字节,更适合机器处理而非人工审读。
四、典型使用场景
- 用 Hex 的地方:MD5/SHA 哈希值展示、颜色值(
#FF5733)、MAC 地址、二进制文件查看、智能合约地址。 - 用 Base64 的地方:邮件附件(MIME)、Data URI 内嵌图片、HTTP Basic 认证、JWT 的三段载荷、API 传输二进制。
- URL 里用 Base64:标准 Base64 的
+/=在 URL 中有特殊含义,要换成 URL Safe 变体(-_代替+/)。
在线体验
不用装任何环境,直接用本站Base64 编解码工具在线操作,数据都在浏览器本地处理,方便又安全。
常见问题
Base64 能当加密用吗?
不能。Base64 只是编码,算法完全公开,任何人都能一步还原。需要保密请用 AES 等真正的加密算法,Base64 最多用于「不可见明文」的场合。
为什么哈希值都用 Hex 显示而不用 Base64?
习惯与可读性:Hex 每两字符对应一个字节,便于人工比对和分段;且哈希长度固定(MD5 恰好 32 个 Hex 字符),用 Hex 更整齐。
Base64 编码后为什么有时结尾有一两个 = ?
Base64 以 3 字节为一组编码成 4 字符,输入长度不是 3 的倍数时用 = 补位:差 1 字节补 1 个 =,差 2 字节补 2 个。解码时 = 会被自动去掉。
