9 个版本 (5 个重大更新)
0.6.2 | 2019年7月28日 |
---|---|
0.6.1 | 2019年7月23日 |
0.5.1 | 2019年7月23日 |
0.4.0 | 2019年7月22日 |
0.1.0 | 2019年7月19日 |
#2235 在 编码
5,380 每月下载量
在 11 个crate中(6个直接使用)
165KB
3K SLoC
radix64
快速简便的 base64 编码和解码。
用法
使用标准字母表进行编码和解码
use radix64::STD;
let encoded = STD.encode("my message");
let decoded = STD.decode(&encoded).unwrap();
assert_eq!("my message".as_bytes(), &decoded);
使用 URL 安全字母表进行编码和解码
use radix64::URL_SAFE;
let encoded = URL_SAFE.encode("my message");
let decoded = URL_SAFE.decode(&encoded).unwrap();
assert_eq!("my message".as_bytes(), &decoded);
使用相同的分配缓冲区对多个消息进行编码。
use radix64::STD;
let mut buf = Vec::new();
let encoded = STD.encode_with_buffer("my message", &buf);
let encoded = STD.encode_with_buffer("my second message", &buf);
使用相同的分配缓冲区对多个消息进行解码。
use radix64::STD;
let mut buf = Vec::new();
let decoded = STD.decode_with_buffer("AABB", &buf);
let decoded = STD.decode_with_buffer("AA==", &buf);
定义并使用自定义字母表
use radix64::ConfigBuilder;
let my_cfg =
ConfigBuilder::with_alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#&")
.no_padding()
.build()
.unwrap();
let encoded = my_cfg.encode("my message");
let decoded = my_cfg.decode(&encoded).unwrap();
性能
标准字母表(STD、URL_SAFE 和 CRYPT)以及 NO_PAD 变体都具有 AVX2 优化的编码器和解码器。如果在支持 AVX2 的 CPU 上运行,这将提供巨大的性能提升。默认情况下,将执行运行时检查以查看是否可用 AVX2。如果您指定为支持 AVX2 的平台进行编译,将避免运行时检查。如果您想避免使用 AVX2 实现,可以在编译 crate 时禁用 "simd" 功能。
在此处查看基准测试运行示例 这里