一文读懂 Base 系列编码:从 Base16 到 Base92
提到编码,你可能首先想到的是 Base64。但你知道吗?Base 家族其实有很多成员,从 Base16 到 Base92,各有各的用途。
今天,我们就来聊聊这些 Base 编码,看看它们都有什么特点,用在什么地方。
什么是 Base 编码
简单来说,Base 编码就是一种用有限的字符集来表示任意数据的方法。
比如 Base64,就是用 64 个字符(A-Z, a-z, 0-9, +, /)来表示所有的二进制数据。
为什么需要编码?主要有两个原因:
- 兼容性:有些系统只能处理文本,不能处理二进制数据
- 可读性:编码后的数据更易于传输和存储
Base16:最基础的编码
原理
Base16 也叫十六进制编码,使用 16 个字符:0-9 和 A-F。
每个字节(8 位)用两个十六进制字符表示。
示例
输入:Hello
输出:48656C6C6F特点
- ✅ 简单易懂,人类可读
- ✅ 广泛用于内存地址、颜色代码等
- ❌ 编码效率低,只有 50%(1 个字节变成 2 个字符)
应用场景
- 内存地址表示:
0x7FFF - 颜色代码:
#FF0000(红色) - MD5/SHA 哈希值:
d41d8cd98f00b204e9800998ecf8427e
Base32:更安全的编码
原理
Base32 使用 32 个字符:A-Z 和 2-7(注意没有 0, 1, 8, 9)。
每 5 个字节编码成 8 个字符。
示例
输入:Hello
输出:JBSWY3DPEBLW64TMMQ======特点
- ✅ 不区分大小写
- ✅ 避免混淆字符(没有 0 和 O,没有 1 和 I)
- ✅ 适合口头传输
- ❌ 编码效率 62.5%,比 Base64 低
应用场景
- TOTP 双因素认证密钥
- 文件系统(不区分大小写的系统)
- 需要口头传达的场景
Base64:最常用的编码
原理
Base64 使用 64 个字符:A-Z, a-z, 0-9, +, /,再加上 = 作为填充。
每 3 个字节编码成 4 个字符。
示例
输入:Hello
输出:SGVsbG8=特点
- ✅ 编码效率高(75%)
- ✅ 使用 ASCII 可打印字符
- ✅ 实现简单,支持广泛
- ❌ 包含特殊字符(+ 和 /),URL 中需要转义
应用场景
- 邮件附件(MIME)
- 在 HTML/CSS 中嵌入小图片(Data URI)
- JSON Web Token (JWT)
- 配置文件中的二进制数据
Base58:比特币的选择
原理
Base58 从 Base64 演变而来,去掉了容易混淆的字符:
- 去掉
0(数字零) - 去掉
O(大写字母 O) - 去掉
I(大写 i) - 去掉
l(小写 L) - 去掉
+和/
最终剩下 58 个字符。
示例
输入:Hello
输出:7PBU6A特点
- ✅ 人类友好,避免混淆
- ✅ 不会产生乱码
- ✅ 支持前导零压缩
- ❌ 编码效率略低于 Base64
应用场景
- 比特币地址:
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa - 加密货币钱包地址
- 短链接(如 YouTube 视频 ID)
Base62:URL 友好的编码
原理
Base62 使用 62 个字符:0-9, a-z, A-Z。
没有特殊字符,完全由字母和数字组成。
示例
输入:Hello
输出:7PBU6A特点
- ✅ URL 安全,无需转义
- ✅ 文件名友好
- ✅ 数据库索引友好
- ❌ 编码效率与 Base64 相当
应用场景
- 短链接服务:
bit.ly/2xK9pQ - 文件 ID 生成
- 数据库主键
- 博客文章 ID(就像我现在用的这样)
Base85:效率之王
原理
Base85 使用 85 个 ASCII 字符(从 ! 到 u)。
每 4 个字节编码成 5 个字符,效率比 Base64 更高。
示例
输入:Hello
输出:87cURD]特点
- ✅ 编码效率最高(80%)
- ✅ 输出更短
- ❌ 包含特殊字符,URL 中需要转义
- ❌ 实现复杂
应用场景
- Git 的 pack 文件
- PDF 文件中的二进制数据
- Ascii85 编码
Base91:更极致的效率
原理
Base91 使用 91 个 ASCII 可打印字符。
编码效率比 Base85 还要高。
特点
- ✅ 编码效率极高
- ✅ 输出最短
- ❌ 包含特殊字符
- ❌ 兼容性差
应用场景
- 需要极致压缩的场景
- 特殊的数据传输协议
编码效率对比
| 编码 | 字符集 | 效率 | 输出长度(100 字节输入) |
|---|---|---|---|
| Base16 | 16 | 50% | 200 字符 |
| Base32 | 32 | 62.5% | 160 字符 |
| Base64 | 64 | 75% | 136 字符 |
| Base85 | 85 | 80% | 128 字符 |
| Base91 | 91 | 82% | 122 字符 |
效率 = 原始数据位数 / 编码后数据位数
如何选择
需要人类可读
- 选 Base16(十六进制)
- 选 Base32(不区分大小写)
需要 URL 安全
- 选 Base62(字母 + 数字)
- 选 Base58(加密货币)
需要最高效率
- 选 Base85 或 Base91
通用场景
- 选 Base64(最常用,兼容性最好)
实际应用案例
1. 短链接服务
原始 URL: https://example.com/very/long/url
短链接:bit.ly/3xK9pQ (Base62)2. 比特币地址
地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (Base58)3. 双因素认证
密钥:JBSWY3DPEBLW64TMMQ====== (Base32)4. 博客文章 ID
文章:/posts/Mtm7 (Base62)总结
Base 编码家族各有各的特点:
- Base16:简单,适合人类阅读
- Base32:不区分大小写,适合口头传输
- Base64:通用,兼容性最好
- Base58:人类友好,加密货币首选
- Base62:URL 安全,短链接必备
- Base85/91:效率最高,特殊场景使用
选择合适的编码,可以让你的数据传输更高效、更安全。
参考资料:
- RFC 4648 - The Base16, Base32, and Base64 Data Encodings
- Bitcoin Wiki - Base58Check encoding
- 各编码标准的官方文档
写于:2026 年 5 月 12 日
作者:思渡鸢