1 个不稳定版本
0.1.0 | 2022 年 8 月 19 日 |
---|
#2163 在 编码
11KB
276 行
N85 编码器 & 解码器。
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 个字符进行编码。