0

我知道 gzip 和其他压缩例程使用字节级重复数据删除操作。我只是想知道是否有像后半部分 gzip 这样的标准编写程序。

具体来说,对于修订历史。当前文本将是纯文本,而以前的修订将在压缩的 blob 中。有没有办法将当前纯文本设置为压缩中的起始文本,而实际上不包括压缩结果中的当前文本。因此,压缩文本和起始文本将一起用于解压缩。

我对 Java、Perl、Node.JS 和我想是 C/C++ 感兴趣,因为有一些方法可以使用上述语言之一调用编译文件。在这种情况下,我将在 UNIX 上构建 C 文件。

是否存在这样的例程,是否有一种重要/可用的语言不止一种?

4

2 回答 2

1

使用 Zip,您可以包含 2 个单独的文件,而不是压缩其中一个

我知道 Java 有处理 zip 文件的工具

于 2012-05-17T19:43:59.730 回答
0

有没有办法将当前纯文本设置为压缩中的起始文本,而实际上不包括压缩结果中的当前文本。

有两种方法。您可以使用zlib为压缩器deflateSetDictionary()提供最多 32K 的历史记录,压缩器将使用它来压缩输入的内容。32K 不包含在压缩数据中,解压器会要求以某种方式可以使用该 32K 才能成功解压。

也许更有效,尤其是对于超过 32K 的文本,使用 Unixdiff生成修订版和当前文本之间的差异,并压缩diff. 您可以diff对多个修订进行连续的 's,然后将其全部压缩。

于 2012-05-17T20:33:17.323 回答