跳到正文
BCBinary Code Translator
菜单

Adobe 风格 Ascii85 工具

Base85 / Ascii85 编码解码器

使用 Adobe 风格 Ascii85 转换 UTF-8 文本;可选 <~ ~> 包装和 z 零组简写,并严格验证空白、分组和定界符。

Ascii85 转换完全在本地执行,文本与字节不会离开页面。

转换方向
0 个字符
0 个字符

转换仅在当前浏览器本地执行,输入不会上传。

尚无结果。

本页所说的 Ascii85

Base85 是一组用 5 个可打印字符表示 4 个字节的编码。本页实现 Adobe PostScript 与 PDF 常见的 Ascii85,普通数字字符范围从 ! 到 u。因为 85 的五次方略大于 2 的 32 次方,五个数字可以承载一个 32 位无符号分组。

Adobe 风格可以用 <~ 和 ~> 包住完整值,也可以把完整的四零字节组压缩为单个 z。这些规则并非所有 Base85 变体都支持,因此界面明确暴露选项。解码既接受有包装也接受无包装值,并按规范忽略 ASCII 空白。

最后一个不足四字节的分组需要特殊处理:临时补零计算五字符,但只输出 n+1 个。解码时用 u 临时补齐并丢掉多余字节;单个尾字符无法表示一个字节,会被拒绝。

如何使用 Ascii85 转换器

  1. 普通文本选择编码,已有 Ascii85 选择解码。
  2. 目标格式要求 Adobe 包装时启用 <~ ~>,原始字段则可关闭。
  3. 需要紧凑 Adobe 输出时启用 z;消费方要求展开零组时关闭。
  4. 解码可包含普通 ASCII 空白,其他字符仍会严格校验。
  5. 用 Hello 向量和往返测试核对定界符、尾组与简写策略。

Ascii85 与 Adobe 边界示例

Ascii85 的语法比 Base32、Base64 更多。示例展示纯输出、Adobe 定界符、部分分组、ASCII 空白和 z 简写。

输入 输出 转换方向 说明
Hello, world! <~87cURD_*#TDfTZ)+T~> 编码 Adobe 定界符:Adobe 包装;z 简写:启用 z 简写 — Adobe Hello 向量。 四字节组变为五字符,最后一个单字节尾组变为两个字符。
hello BOu!rDZ 编码 Adobe 定界符:纯 Ascii85;z 简写:启用 z 简写 — 纯 Ascii85。 相同算法也可以不带 Adobe 外层定界符。
<~ 87cUR D_*#T DfTZ)+T ~> Hello, world! 解码 带空白解码。 解码时忽略 ASCII 空格、制表符和换行。
z 解码 零组简写。 组边界处的 z 展开为四个零字节,不能插入部分组。
f <~Ac~> 编码 Adobe 定界符:Adobe 包装;z 简写:启用 z 简写 — 单字节尾组。 一个尾字节产生两个字符,不输出临时补齐的五字符。
你好 <~jLq5JV7c~> 编码 Adobe 定界符:Adobe 包装;z 简写:启用 z 简写 — Unicode UTF-8。 六个 UTF-8 字节形成一个完整组和一个两字节尾组。

解码器接受的 Ascii85 语法

包装值必须同时包含开始与结束标记,并包围全部非空白内容。只有一个标记、嵌套标记或结束后仍有数据都非法。

普通数字为 ASCII 33 到 117。z 仅能在当前没有待处理数字的组边界出现。本实现不接受部分 btoa 变体中的 y。

  • 解码忽略 ASCII 空白,不会自动删除任意 Unicode 空白。
  • 普通组恰好五字符并产生四字节。
  • 尾组可有二、三或四字符,不能只有一个。
  • uuuuu 超过 0xFFFFFFFF,会按溢出拒绝。
  • z 只在组边界展开为四个零字节。

Ascii85 如何编码完整组与尾组

每个四字节组按大端顺序组成 32 位无符号值,反复除以 85 得到五个数字,再各加 33 映射到 ! 至 u。零值通常是 !!!!!,启用 Adobe 简写时可变为 z。

尾组只为计算临时补零。存在 n 个源字节时输出 n+1 个字符;解码用 u 补到五字符并只保留原字符数减一的字节。

85^5 可表示超过 32 位的数,因此即使五个字符都在合法范围,也可能数值溢出。工具会拒绝而不是环绕。

Adobe 风格 Ascii85 的用途

Ascii85 最适合与已经明确规定该格式的系统互操作。它比十六进制紧凑,但标点较多,不天然适合 URL。

用途 说明
PostScript 数据流 Adobe 最初用它在文本型 PostScript 中更紧凑地表示二进制流。
PDF 数据检查 PDF 对象可能使用 ASCII85Decode 过滤器,并包含空白和 Adobe 风格边界。
旧系统交换 处理遗留字段时必须保持定界符和尾组规则一致。
编码库测试 零组、单字节尾组、空白和溢出是很有价值的边界用例。
紧凑可打印测试数据 四字节变为五字符,比十六进制短,仍可放在文本文件。

Ascii85 错误与 Base85 名称歧义

Base85 并不对应唯一字母表。Z85、RFC 1924、btoa 与 Adobe Ascii85 在字符、包装、简写或分组要求上不同。

本页明确采用 Adobe 风格:接受空白和 z,不接受 y;允许合法尾组,不允许单字符尾组;定界符只能成对位于最外层。

  • 待处理组中出现 z 非法。
  • 孤立的 <~ 或 ~> 非法。
  • 除独立 z 外,u 之后的字符不属于字母表。
  • 单字符尾组信息不足。
  • 合法 Ascii85 字节也可能不是 UTF-8 文本。

Ascii85、Z85 与 Base64

Ascii85 和 Z85 都用 85 个符号,但 Z85 字母表不同、要求输入长度可被 4 整除,也没有 Adobe 定界符或 z。两者不可互换。

Base64 稍长但标准化和生态支持更广;Base64url 还避免 URL 保留字符。Ascii85 标点多,最好只用于明确指定它的格式。

格式 说明
Z85 使用不同字母表和固定四字节块,本页不实现。
Base64 Web、MIME 和 API 中支持更广,六字节输出八字符。
十六进制 最容易逐字节检查,但四字节需要八字符。

Ascii85 编码解码常见问题

Base85 与 Ascii85 相同吗?

Base85 是家族名称。本页实现 Adobe 风格 Ascii85,包括 ! 到 u、可选定界符、尾组与 z 简写。

<~ 和 ~> 有什么作用?

它们标记完整 Ascii85 值的开始与结束,可选使用,但出现时必须成对包在最外层。

为什么接受 z 而不接受 y?

Adobe Ascii85 定义 z 表示四个零字节;y 属于其他实现中四空格的扩展。

可以包含空格和换行吗?

解码器会忽略 ASCII 空白,编码器本身不会自动换行。

为什么单字符尾组非法?

n 个尾字节需要 n+1 个字符,因此至少两个字符才能恢复一个字节。

Ascii85 是加密吗?

不是。它只是可逆的可打印表示,不提供校验和、认证或保密。

相关编码与字符工具

查看全部工具

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE