#decode #base85 #codec #byte-string #ascii85

nightly no-std bin+lib n85

N85 (Ascii85 变体) 编码器 & 解码器

1 个不稳定版本

0.1.0 2022 年 8 月 19 日

#2163编码

0BSD 许可证

11KB
276

N85 编码器 & 解码器。

docs.rs crates.io crates.io

N85 是一种基于 Ascii85 的二进制到 ASCII 编码,但更适用于作为字符串使用(即不包括 \'"),并且实现比其他变体更简单。

每 4 个字节映射到 5 个字符,增加了约 25% 的存储开销。相比之下,base64 将每 3 个字节映射到 4 个字符,增加了约 33% 的开销。

示例

let s = "Hello, world!";

let enc = n85::encode_string(s.as_ref());
assert_eq!(&enc, "Yb(qJ[NH@N0AO?HI(");

let dec = n85::decode_vec(enc.as_ref()).unwrap();
assert_eq!(&dec, s.as_bytes());

规范

任意字节字符串被分割成 32 位小端整数块。最后一个块用零填充。

每个整数被 85 除 5 次,得到 5 个余数。每个余数加上 40 (()。如果结果是等于或大于 92 (\),则加 1。

如果最后一个块的大小为 1、2、3 或 4 字节,则分别使用 2、3、4 或 5 个字符进行编码。

无运行时依赖

功能