#解压缩 #xnb #lzx

lzxd

Microsoft LZXD压缩格式的解压缩实现

11个版本

0.2.5 2023年12月27日
0.2.4 2023年12月26日
0.2.1 2023年11月21日
0.1.4 2021年10月10日
0.1.0 2020年7月13日

#73 in 压缩

Download history • Rust 包仓库 9391/week @ 2024-04-09 • Rust 包仓库 8644/week @ 2024-04-16 • Rust 包仓库 10078/week @ 2024-04-23 • Rust 包仓库 9274/week @ 2024-04-30 • Rust 包仓库 11487/week @ 2024-05-07 • Rust 包仓库 9213/week @ 2024-05-14 • Rust 包仓库 10028/week @ 2024-05-21 • Rust 包仓库 11347/week @ 2024-05-28 • Rust 包仓库 10174/week @ 2024-06-04 • Rust 包仓库 9461/week @ 2024-06-11 • Rust 包仓库 8326/week @ 2024-06-18 • Rust 包仓库 11022/week @ 2024-06-25 • Rust 包仓库 8887/week @ 2024-07-02 • Rust 包仓库 10959/week @ 2024-07-09 • Rust 包仓库 13034/week @ 2024-07-16 • Rust 包仓库 14800/week @ 2024-07-23 • Rust 包仓库

49,334 每月下载量
28 个crate中(通过 cab)使用

MIT/Apache

69KB
1K SLoC

lzxd

基于Microsoft的lzxd编码实现,基于文档本身的描述和代码。这个crate目前只实现了解压缩。

use lzxd::{Lzxd, WindowSize};

let mut lzxd = Lzxd::new(WindowSize::KB64);

while let Some(chunk) = get_compressed_chunk() {
    let decompressed = lzxd.decompress_next(&chunk);
    write_data(decompressed.unwrap());
}

项目的动机是能够读取由XNA Game Studio生成的XNB文件,其中一些文件使用了LZXD压缩。

非常感谢LeonBlade的xnbcli项目,该项目极大地帮助调试了这个实现,并特别感谢dorkbox的CabParser,它进一步帮助验证了这个实现能够正确地解压缩实际数据。

许可证

此库根据您的选择许可如下:

无运行时依赖