【发布时间】:2014-02-03 23:11:20
【问题描述】:
来自Wikipedia的描述:
LZ4 算法将数据表示为一系列序列。每个序列都以一个字节标记开始,该标记分为两个 4 位字段。第一个字段表示要复制到输出的文字字节数。第二个字段表示要从已解码的输出缓冲区复制的字节数(0 表示 4 个字节的最小匹配长度)。任一位域中的值 15 表示长度较大,并且有一个额外的数据字节要添加到长度中。这些额外字节中的值 255 表示要添加另一个字节。因此,任意长度由一系列包含值 255 的额外字节表示。在文字字符串之后是标记和指示字符串长度所需的任何额外字节。后面是一个偏移量,指示输出缓冲区中开始复制的距离。匹配长度的额外字节(如果有)出现在序列的末尾
我完全不明白!有没有人有一个简单的方法来理解例子? 例如,在上面的解释中,什么是文字字节,什么是匹配?当我们刚开始压缩时,我们如何才能有一个解码的输出缓冲区?什么长度?
here 的解释对我来说也是不可理解的。
一个简单的例子会很好,除非你有更好的解释方式。
【问题讨论】:
-
例如考虑无符号字符的字符串:“hello eddy how are you”。它们将如何被压缩?
-
以下链接对 LZ4 压缩格式及其工作原理进行了很好的解释:brutaldeluxe.fr/products/crossdevtools/lz4/index.html
-
好的,所以在每个压缩块中可以有一个文字部分和许多匹配部分?这似乎是合乎逻辑的,因为一个字节序列可以重复数十次。是这样吗?
标签: algorithm compression lz4