#serialization #integer #protobuf #varint #zigzag #signed-integer

integer-encoding

varint+zigzag和fixedint整数编码/解码(https://developers.google.com/protocol-buffers/docs/encoding)

31个稳定版本 (4个主要版本)

4.0.2 2024年8月1日
4.0.0 2023年6月30日
3.0.4 2022年6月22日
3.0.3 2022年2月22日
0.12.0 2016年6月19日

编码类别中排名62

Download history 272444/week @ 2024-04-30 298633/week @ 2024-05-07 337351/week @ 2024-05-14 344058/week @ 2024-05-21 348965/week @ 2024-05-28 368214/week @ 2024-06-04 356224/week @ 2024-06-11 350397/week @ 2024-06-18 407951/week @ 2024-06-25 359605/week @ 2024-07-02 343313/week @ 2024-07-09 346830/week @ 2024-07-16 358363/week @ 2024-07-23 360092/week @ 2024-07-30 347769/week @ 2024-08-06 361910/week @ 2024-08-13

每月下载量1,491,948
用于846个crate(95个直接使用)

MIT许可证

35KB
720 代码行

integer-encoding-rs

crates.io Actions CI

完整文档

此crate提供了整数到字节数组表示的编码和解码。

格式描述如下:Google的protobuf整数编码技术

请使用 cargo bench 命令来确定您的机器编码和解析varints和fixedints的速度。请注意,一个迭代包含对有符号和无符号整数各进行8轮编码(或解码)——将得到的基准时间除以16,以得到每个操作的大致时间估计。整数非常大,所以结果代表最坏情况。

crate

如果您使用Tokio v0.2并且使用此crate中的异步类型(特性 tokio_async),您可能会对v2.0分支感兴趣。它仍然偶尔修复边缘情况,并依赖于Tokio v0.2。

FixedInt

FixedInt通过复制底层内存或执行转义操作将整数转换为字节。编码值使用小端字节序。

然而,为所有整数类型实现了trait方法,以便方便地在小端和大端之间进行转换。也就是说,如果您在网络上收到大端字节序,并在解码它,它将首先被解释为小端字节序;转换将恢复正确的值。

VarInt

VarInt将整数编码为7位块;除了最后一个字节之外,每个字节都将设置MSB,在最后一个字节中清除。

有符号值首先使用zigzag编码(也在上述链接的页面上描述)转换为无符号表示,然后与其他无符号数一样进行编码。

依赖项

~0–1.4MB
~25K SLoC