encode | decode | base85

> zeromq | 源码安全 | 高效 <

// Z85 —— ZeroMQ 的 Base85 变体,适合安全嵌入到源码和 JSON 中

[SOURCE-SAFE]

对源码友好

不包含引号、反斜杠和空白等敏感字符,适合直接嵌入 C/C++ 字符串、配置文件或 JSON 字段。

[EFFICIENT]

信息密度高

按 4 字节 → 5 字符 的比例进行编码,大约 25% 的体积膨胀,相比 Base64(约 33%)更节省空间。

[ZEROMQ]

ZeroMQ 标准

是 ZeroMQ 在文本协议中封装二进制数据时使用的官方 Base85 编码方案。

>> 技术说明

Z85 的工作原理:

Z85 使用 85 个可打印 ASCII 字符,将每 4 个字节编码成 5 个字符。字母表刻意避开在 C/C++ 字符串与 JSON 中必须转义的字符,从而降低手动转义和 bug 的风险。

示例:

"Hello" → nm=QNz.92

为什么使用 Z85:

  • >希望把二进制数据直接嵌入到源码或配置文件中
  • >希望 JSON、YAML、XML 等文本格式中尽量少写转义字符
  • >希望相对 Base64 获得更紧凑的文本表示
  • >正在使用 ZeroMQ 或与其协议集成
  • >希望在文本 API 中统一二进制 payload 的编码方式

>> 常见问题

什么是 Z85 编码?

Z85 是 ZeroMQ 定义的一种 Base85 编码格式,使用 85 个精心挑选的 ASCII 可打印字符,避免了绝大多数在代码和 JSON 中需要转义的字符。

Z85 和普通 Base85 有什么区别?

Z85 采用的字符表不同于其他 Base85 变体,去掉了引号、反斜杠、空格等不利于在源码中直接使用的符号。

在什么场景下适合用 Z85?

适合用在库示例代码、配置文件、文本协议负载(尤其是 ZeroMQ 消息)等需要将二进制嵌入到文本中的场景。

Z85 对数据长度有什么要求?

Z85 要求原始二进制长度是 4 字节的倍数。编码过程中可以通过补零或填充来满足,但解码时必须按该约束还原。

其他语言