2次发布
0.1.1 | 2019年1月12日 |
---|---|
0.1.0 | 2019年1月12日 |
#2372 在 编码
1,545 每月下载
在 2 crates 中使用
8KB
85 行
base62.rs
一个用于将字节数组编码/解码为Base62字符串的库。
字母表
该库定义Base62字母表为以下字符
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
工作原理
一个字节数组(允许前导零)在前面加上0x01
,并将其视为一个大端无符号整数(num_bigint::BigUint
)。
然后,该数字被重复除以我们的基数62
,每个余数被用作上面字母表的索引,从而生成Base62编码的字符串。
解码时,我们反向运行上面的算法。
示例
fn main() {
let input = vec![0xDE,0xAD,0xBE,0xEF];
let encoded = base62::encode(&input);
println!("0xDEADBEEF = {}", encoded);
let deadbeef = base62::decode("JsoUl8").unwrap();
let input = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt";
let encoded = base62::encode(input.as_bytes());
println!("lorem... = {}", encoded);
let loremipsum = base62::decode("Inj62xrWzFT5RgFoP72ZkfbrMabXdyZeYGijtTt8zuBN4XvHvEw6x2pk2BtdepGle57axcSeY2ixeXqOvwpE2VaEE3pHeeumHvIbZf0qUUxRBg99NrIALFCE").unwrap();
}
依赖项
~565KB
~12K SLoC