当前位置: 首页 > 知识库问答 >
问题:

gzip/deflate能识别模式吗

庄子平
2023-03-14

我正在研究Gzip的内部工作,我知道它使用了Huffman编码和LZ77的组合。

我还意识到一个Gzip文件被分成几个块,每个块都有一个为它构建的字典。然后,频繁出现的相似数据被指向字典中位置的指针替换。

因此,短语“马与其他马比赛”将用指针取代马这个词。

Gzip是否包含比字典指针更好地压缩文件的机制

Gzip压缩少量重复数据和少量难以压缩的数据的效果如何?

共有1个答案

金阳曜
2023-03-14

每个放气块都没有“为它构建的字典”。为每个放气块构建的是一组用于文字/长度符号和距离符号的霍夫曼代码

您引用的字典只是紧随当前正在压缩的字节之前的32K字节的未压缩输入。就是这样。每个长度/距离对可以引用最近32K中的3到258字节的字符串。这是独立于deflate块的,这样的引用通常可以追溯到一个或多个块。

Deflate不能很好地压缩三个随机字节的序列,零字节,三个随机字节,零字节...不会有有用的重复字符串,在这里Deflate只能对文字进行霍夫曼编码,零更频繁。它将零编码为两位,因为它们出现的时间略多于25%,其余的文字至少为每个8.25位。对于该数据,平均每字节约为6.7位,或者压缩比为0.85。事实上,gzip给出的数据约为0.86。

 类似资料:
  • 我正在工作的一个fpga实现deflate或gzip解压。我需要首先理解压缩数据流的格式,然后才能进行一些编码。 我阅读文档,但我总是在树上看到关于霍夫曼编码和阅读,

  • 本文向大家介绍Nodejs关于gzip/deflate压缩详解,包括了Nodejs关于gzip/deflate压缩详解的使用技巧和注意事项,需要的朋友参考一下 0x01.关于 写http时候,在接收http请求时候,出现乱码,后来发现是gzip没有解压。 关于gzip/deflate压缩,有放入管道压缩,和非管道压缩方法。 0x02.管道压缩 Node中的I/O是异步的,因此对磁盘和网络的读写需要

  • 我有一个用gzip1.5编码的存档。我无法使用C zlib库解码它。zlib返回EC-3 stream.msg=“unknown compression method”。 文件的前32个字节是: 如果这是deflate编码的,那么我希望下一个字节@0x12是0AABBBBB(BFINAL=0和BTYPE=一些压缩) 如果这是zlib编码的,我希望下一个字节@0x12采用0AAA1000 bbbcc

  • 问题内容: 我正在寻找一个Java框架来帮助进行一些特定于图像的数据挖掘。我们有一组历史图像,我想对其进行分类和分类。我希望找到类似weka的东西http://www.cs.waikato.ac.nz/ml/weka/或Marsyas http://marsyas.sness.net,但更特定于通过图像数据进行筛选以找到图案。有什么建议? 问题答案: 如何使用OpenCV 库进行处理?从技术上讲,

  • 我的函数每次我调用它抱怨非穷尽模式时都会抛出一个异常 并行检查的定义如下: 在应用了-Wall的GHCI中运行函数只会返回 我对哈斯克尔相当陌生,也相当困惑。我认为模式匹配与和应该解决这个问题。