#retro #expand #huffman #lzss #disk-image

bin+lib 后压缩器

使用后格式进行文件压缩

2 个版本

0.1.1 2023 年 9 月 2 日
0.1.0 2023 年 8 月 20 日

#607压缩


用于 2 个 crate(通过 a2kit

MIT 许可证

240KB
2K SLoC

后压缩器

unit tests

这个项目的初始动机是提供一个库,以帮助处理 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