3个版本
0.1.2 | 2023年5月27日 |
---|---|
0.1.1 | 2023年5月27日 |
0.1.0 | 2023年5月26日 |
#363 in 压缩
每月50次下载
用于 zx0dec
105KB
215 代码行
zx0decompress
一个Rust库,用于解压缩使用Einar Saukas的ZX0压缩格式压缩的文件。
通常,您使用ZX0格式在ZX Spectrum等8位平台上节省空间。您在现代计算机上压缩数据,并在目标平台上使用汇编语言实现的解压缩器。
对于某些用例,例如构建工具和其他实用程序,在您的工作站上拥有解压缩器可能仍然很有用。这就是我创建这个库的原因。
我还基于这个库实现了一个名为zx0dec
的命令行应用程序。
用法
将crate添加到您的项目
cargo add zx0decompress
使用任何实现 std::io::Read
的对象调用 zx0decompress::decompress
。
您可能还需要指定除默认设置以外的设置。为此,请调用 zx0decompress::decompress_with_settings
。
示例
从文件解压缩到 Vec<u8>
let mut source = std::fs::File::open(filename)?;
let content = zx0decompress::decompress(&mut source)?;
从字节数组解压缩到 Vec<u8>
let source = [
0x1fu8, 0x41, 0x42, 0x52, 0x41, 0x20, 0xf6, 0xab, 0x43, 0x44, 0xf5, 0xf2, 0x55, 0x58,
];
let result = decompress(&mut source.as_ref()).unwrap();
assert_eq!(&result, b"ABRA ABRACADABRA");
测试
在 lib/tests 中有压缩文件(使用 zx0-rs 压缩)及其对应的未压缩文件。测试用例验证 zx0decompress
是否正确解压缩。
在 fuzz 目录中有可以使用 cargo-fuzz 运行的模糊测试。
cargo fuzz run fuzz_decompress
链接
依赖关系
~310–780KB
~18K SLoC