#变量 #字节 #编码解码 #字节数组

vbe

Variable Byte Encoding (VBE)压缩算法的Rust实现

1个不稳定版本

0.1.1 2023年11月21日

#407压缩

MIT 许可证

170KB
72

vbe-rs – 一个可变字节编码Rust库

此Rust库提供了可变字节编码(VBE)的功能,这是一种无损数据压缩形式,常用于以较小输出大小编码整数。这在数据库和索引等应用中特别有用,在这些应用中,许多数字可能很小,内存效率很重要。

用法

要在Rust项目中使用此库,请将以下内容添加到您的Cargo.toml文件中

[dependencies]
vbe = { git = "https://github.com/bazzilic/vbe-rs", tag = "v0.1.1" }

然后,在您的Rust代码中导入vbe模块

use vbe::{encode, decode};

encode函数接受一个无符号整数的引用,并返回一个包含数字VBE表示形式的Vec<u8>的引用

let number: u128 = 123456789;
let encoded = vbe::encode(&number);

decode函数接受一个u8迭代器(例如一个Vec<u8>或一个切片)并返回一个Result<u128, String>。如果输入是数字的有效VBE表示形式,则decode将返回Ok(number)。如果输入无效(例如,如果它在数字中间结束),则decode将返回一个包含错误信息的Err

let encoded: Vec<u8> = vec![...]; // some VBE-encoded bytes
match vbe::decode(encoded.into_iter()) {
    Ok(number) => println!("The number is {}", number),
    Err(err) => println!("Failed to decode: {}", err),
}

请注意,decode会修改并推进迭代器。这样,如果您在字节数组中有多个VBE编码的数字,您可以使用相同的迭代器继续调用“decode”来逐个解码数字。

测试

该库为encodedecode函数提供了单元测试。您可以使用命令cargo test运行这些测试。

VBE 格式

贡献

欢迎向本项目贡献。请随意提交拉取请求或在该项目的GitHub页面上打开一个问题。

许可协议

本项目采用MIT许可协议。有关更多详细信息,请参阅LICENSE文件。

依赖项