gpt4 book ai didi

索引/随机访问 7zip .7z 文件

转载 作者:行者123 更新时间:2023-12-04 22:37:01 25 4
gpt4 key购买 nike

存在提供对 gzip 和 bzip2 文件的随机访问的工具:

  • gzip zran.c from the ghostscript source code
  • bzip2 seek-bzip by James Taylor

  • 我正在为 7zip 寻找任何类似的解决方案

    (目标是离线使用有时巨大的维基百科转储文件而不解压缩它们)

    最佳答案

    我认为最好总结一下 GZIP、BZIP2 和 LZMA 的内部结构来弄清楚一些事情:

  • GZIP 实际上是一种使用 Deflate 算法的格式。由于静态霍夫曼代码(deflate 文档也提到了动态霍夫曼,但实际上它们也是静态的)deflate 应该按块编码(滑动窗口是这里的另一个术语)。 zran.c 似乎找到了这些块边界,并尝试最多解码 2 个连续块,其中可能包含一些 KiB 未压缩数据,以收集足够的数据进行解压缩(以填充整个 32 KiB 窗口)。因此,即使没有索引表,也很可能进行随机访问。
  • BZIP2 实际上是一种 BWT 类压缩算法。并且由于 BWT 的性质,难怪它是块明智的。每个单独的块的块限制为 900 KiB。此外,块边界被很好地定义为易于恢复过程(具有巨大的不同标记)。因此,您甚至可以一次使用多个线程来解压缩所有数据。换句话说,即使没有任何表,随机访问也很有可能(它已经被格式支持)。
  • LZMA 最多支持 1 GiB 字典,并且不是按块编码的。它使用范围编码器来编码概率而不是霍夫曼编码器。即使考虑 64 MiB 窗口大小(非常常见的值),由于范围编码器的性质,我们不能简单地在给定的随机点解码,直到填满整个窗口。此外,LZMA 的状态机也很麻烦。所以,它的实现是相当困难的,甚至是不可能的。

  • 也许 LZMA2 或 PPM 方法可用于此类用途(7-zip 也支持 7-zip 格式)。 PPM 在统计数据已满时刷新它的模型,而 LZMA2 有意在某个时间间隔刷新某些状态以启用多线程解压缩。他们的随机访问实现是可能的。

    关于索引/随机访问 7zip .7z 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4457997/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com