3 个稳定版本
1.0.2 | 2023 年 12 月 27 日 |
---|---|
1.0.1 | 2023 年 12 月 12 日 |
1.0.0 | 2023 年 12 月 11 日 |
#415 in 编码
2,995 每月下载量
用于 10 个 crate (4 直接)
200KB
3.5K SLoC
fast32
Rust 中的 Base32 和 base64 编码。主要用于整数(u64, u128)和 UUID 标识符(在 uuid
功能之后),以及任意字节序列。并且做得非常快(更多内容请参见下面)。
该 crate 提供了安装说明,并且文档提供了丰富的示例。
整数编码
请注意,默认情况下,通过常规算法将整数编码为 base32 或 base64 不会“看起来”像数字——特别是最右侧的字符通常看起来不正常,有时字符数量比所需的还多。这可能对混淆有所帮助,但几乎微不足道,但它使它们难以快速理解,而且将它们作为整数而不是任意字节序列(因为我们事先知道整数始终是较小的尺寸)处理效率更高。
例如,将常规/十进制整数 31
正常处理,作为字节序列,转换为官方 RFC 4648 base32 十六进制,不带填充,将输出为 "D4"
。相比之下,将其作为整数处理,就像这个库可以做到的那样,将输出为 "Z"
(在 Crockford 的 base32 字母表中),这比 32
小一个,更直观(在 "10"
中),正如人们所希望的那样(与 base32 十六进制中的 "EA"
相比——注意那是一个 A
而不是一个 4
,因此字符串在增加 1 的情况下非直观地发生了变化)。这对于标识符等 base32 编码的“看起来很好”的 URL 非常有帮助。
速度
这个库旨在尽可能快,同时保持直观的界面。
根据此存储库中的性能比较,在我的机器上,它解码u64的效率比最接近的替代方案快约65-100%以上,而编码u64的效率则快约15-50%以上,对于较大的数字,效率提升更为明显。(该存储库没有提供u128或uuid支持以进行比较。)
在解码和编码原始字节方面,它也比最接近的其他替代方案快约35-40%,该方案虽然更成熟,但没有提供此存储库的整数编码/解码功能,并且性能较慢。还有一个早期且似乎已被长期遗弃的替代方案,其速度通常比此存储库慢约3倍(因此也比其他替代方案慢约2倍),但仍然有一定的受欢迎程度。
总结
简而言之,此存储库应该能满足您对base32和base64编码的所有需求(如果不能满足,请提出问题!),同时执行速度快且方便。