2 个版本
0.1.1 | 2023 年 9 月 2 日 |
---|---|
0.1.0 | 2023 年 8 月 20 日 |
#607 在 压缩
用于 2 个 crate(通过 a2kit)
240KB
2K SLoC
后压缩器
这个项目的初始动机是提供一个库,以帮助处理 TD0 文件(Teledisk 兼容磁盘镜像)。预计随着时间的推移,其范围将扩大。
direct_ports::lzhuf
- 几乎是 Okumura 等人经典LZHUF
的直接移植。lzss_huff
- 对LZHUF
进行了重大重写,具有灵活的参数td0
- 将普通 Teledisk 转换为高级 Teledisk,或反之亦然
大小限制
此工具未针对大文件进行优化。用于描述文件大小的某些 32 位整数被保留,因为它们是格式的一部分。截至本文撰写时,没有在处理过程中提供状态指示器,状态仅在完成或失败时才可用。
可执行文件
可以使用可执行文件从命令行压缩或解压缩文件。例如,使用自适应 Huffman 编码的 LZSS 压缩或解压缩文件
后压缩器压缩-m lzss_huff-i<big.txt> -o<small.lzh>
后压缩器解压缩-m lzss_huff-i<small.lzh> -o<big.txt>
要获取一般帮助
后压缩器--帮助
库
此 crate 可以用作库。有关如何使用库的示例,请参阅 main.rs
(该文件按常规 rust 安排调用 lib.rs
)。还可以查看 crate 文档。
Teledisk
Teledisk 图像有“高级”版本,使用与 Okumura 的 LZHUF
相当的压缩(据信是这样),这反过来可以使用模块 lzss_huff
模拟。然而,Teledisk 头部和 LZHUF
头部不同,每当添加或删除高级压缩时,都需要修改 Teledisk 头部。为了方便起见,有一个模块 td0
来处理此问题,并且也可以从命令行访问它
后压缩器压缩-m td0-i<normal.td0> -o<advanced.td0>
后压缩器解压缩-m td0-i<advanced.td0> -o<normal.td0>
由于原始软件不再可用,并且格式仍然保密,因此测试 TD0 是有问题的。如果您发现任何错误,请提交问题。
重要
高级TD0图像不记录扩展数据的长度。因此,一些解码器在解码最后一个符号时遇到困难(特别是MAME v0.257)。解决方案是在压缩之前用几个不同值的字节填充扩展TD0。Teledisk显然就是这样做的,所以通常没有问题,但如果你是TD0图像的创建者,添加填充是一个好主意。
依赖关系
~6–17MB
~228K SLoC