#leb128 #variables #length

不依赖std nano-leb128

小端基128可变长度编码压缩

1个不稳定版本

0.1.0 2019年7月7日

#400压缩

Download history 82/week @ 2024-04-07 315/week @ 2024-04-14 147/week @ 2024-04-21 118/week @ 2024-04-28 97/week @ 2024-05-05 317/week @ 2024-05-12 434/week @ 2024-05-19 387/week @ 2024-05-26 563/week @ 2024-06-02 117/week @ 2024-06-09 220/week @ 2024-06-16 50/week @ 2024-06-23 17/week @ 2024-06-30 125/week @ 2024-07-07 59/week @ 2024-07-14 129/week @ 2024-07-21

330 每月下载量
4 crates 中使用

MIT/Apache

20KB
252 代码行

nano: leb128

小端基128可变长度编码压缩。

用法

有符号LEB128压缩/解压缩

use nano_leb128::SLEB128;

fn rand_i64() -> i64 {
    // ...
}

let mut buf = [0; 10];
let value = rand_i64();

// Compress the value into the buffer.
let len = SLEB128::from(value).write_into(&mut buf).unwrap();

// Decompress the value from the buffer.
let (decompressed, _len) = SLEB128::read_from(&buf[..len]).unwrap();

assert_eq!(i64::from(decompressed), value);

无符号LEB128压缩/解压缩

use nano_leb128::ULEB128;

fn rand_u64() -> u64 {
    // ...
}

let mut buf = [0; 10];
let value = rand_u64();

// Compress the value into the buffer.
let len = ULEB128::from(value).write_into(&mut buf).unwrap();

// Decompress the value from the buffer.
let (decompressed, _len) = ULEB128::read_from(&buf[..len]).unwrap();

assert_eq!(u64::from(decompressed), value);

功能

  • std (默认启用)

    这启用了仅与Rust标准库一起可用的扩展。

  • std_io_ext

    std::io中的特质的实现者添加读取/写入LEB128压缩值的方法。此功能需要std功能,如果尚未启用,则将自动启用它。

  • byteio_ext

    byteio中的特质的实现者添加读取/写入LEB128压缩值的方法。此功能不需要std功能。

许可证

本项目可选择以下任一许可证进行双重授权:

任选其一。

依赖关系

~48KB