#encode #decode #byte-array #codec

base-62

将字节编码为/解码为Base62字符串

2次发布

0.1.1 2019年1月12日
0.1.0 2019年1月12日

#2372编码

Download history 1112/week @ 2024-03-14 1069/week @ 2024-03-21 898/week @ 2024-03-28 786/week @ 2024-04-04 962/week @ 2024-04-11 413/week @ 2024-04-18 404/week @ 2024-04-25 457/week @ 2024-05-02 481/week @ 2024-05-09 839/week @ 2024-05-16 578/week @ 2024-05-23 1012/week @ 2024-05-30 446/week @ 2024-06-06 445/week @ 2024-06-13 277/week @ 2024-06-20 244/week @ 2024-06-27

1,545 每月下载
2 crates 中使用

MIT 许可证

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