> 最大 | 效率 | 压缩 <

// 使用 91 个可打印 ASCII 字符的 Base91 编码,为文本数据提供尽可能高的空间利用率

[MAXIMUM]

更高的压缩效率

与常见的 Base64 等编码相比,Base91 的开销约为 23%,在相同数据量下生成的字符串更短。

[ASCII]

全部为可打印字符

仅使用 91 个可打印 ASCII 字符,适合用于日志、文本协议、调试输出等需要人眼阅读的场景。

[COMPACT]

显著节省空间

Base64 一般有约 33% 的体积膨胀,而 Base91 约为 23%,在大量请求、日志或消息传输中能累计节省大量字节。

>> 技术细节

Base91 的工作原理:

Base91 从 94 个可打印 ASCII 字符中选取 91 个,按特定算法将 13–14 bit 数据打包成两个字符输出,在文本可读与压缩效率之间取得平衡。

示例:

"Hello" → >OwJh>A

为什么使用 Base91:

  • >希望在文本通道上尽可能减小编码体积
  • >比 Base64(约 33% 开销)更高效的替代方案
  • >使用可打印字符,适合日志、命令行工具和调试输出
  • >在带宽或存储成本敏感的系统中长期节省流量
  • >提升 API 响应、消息队列负载的整体数据密度

>> 常见问题

什么是 Base91 编码?

Base91 是一种二进制到文本的编码方案,使用 91 个可打印 ASCII 字符来表示二进制数据,相比 Base64 等传统方案可以生成更短的文本。

什么时候应该用 Base91 而不是 Base64?

当你需要在 HTTP、日志、消息系统等文本通道中尽可能降低数据体积时,Base91 是比 Base64 更合适的选择,尤其是在带宽或存储敏感的场景。

Base91 与 Base64 在尺寸上的差异有多大?

通常 Base64 会比原始数据增大约 33%,而 Base91 约为 23%。在大规模日志和 API 流量中,这种 10% 左右的差距会累计成明显的节省。

Base91 的生态是否成熟?

Base91 没有 Base64 那么普及,但已经有多种语言的实现,在对压缩效率敏感的项目中被广泛采用。

// 对比

名称bits/charoverhead
Base164100%
Base32560%
Base64633.3%
Base856.4124.8%
Base916.5122.9%

// 代码示例

Alphabet  A-Z a-z 0-9 ! # $ % & ( ) * + , . / : ; < = > ? @ [ ] ^ _ ` { | } ~ "
Excluded  - \ '  and space           (3 of the 94 printable ASCII characters)
Bits      log2(91) = 6.508 bits/char  ->  8 / 6.508 = 1.229  (~23% overhead)
Python    pip install base91    base91.encode(b'Hello')
JS        npm i base91          base91.encode(...)

>> 更多问题

问:basE91 使用哪 91 个字符?

答:basE91 使用 94 个可打印 ASCII 字符(不含空格)中的 91 个:A–Z a–z 0–9 以及 ! # $ % & ( ) * + , . / : ; < = > ? @ [ ] ^ _ ` { | } ~ "。被排除的是 -、\ 和 '。双引号 " 包含在内,在 JSON 或 shell 中需要转义。

问:为什么 Base91 的开销约为 23%?

答:共 91 个符号,每个字符携带 log₂(91) ≈ 6.508 位。8 / 6.508 ≈ 1.229,即约 22.9% 的开销。对比:Base32 为 60%,Base64 为 33%,Base85 为 25%。

问:什么时候 Base91 比 Base64 更好?

答:只有在每个字节都很宝贵时,比如嵌入式系统或受限协议。Base91 不是 URL 安全的,标准库中没有,支持也很少。日常使用 Base64 更合适。

其他语言