来自维基百科的描述
LZ4算法将数据表示为一系列序列。每个序列以一个字节令牌开始,该标记被分解为两个4位字段。第一个字段表示要复制到输出的文字字节数。第二个字段表示要从已解码的输出缓冲区复制的字节数(0表示最小匹配长度为4个字节)。任一位字段中的值为15表示长度更大,并且有一个额外字节的数据将被添加到长度中。这些额外字节中的值255表示要添加的另一个字节。因此,任意长度由一系列包含值255的额外字节表示。在字串之后出现标记和指示字符串长度所需的任何额外字节。后面是一个偏移量,该偏移量指示要在输出缓冲区中返回多久才能开始复制。匹配长度的额外字节(如果有的话)出现在序列的末尾。
我一点也不明白!有没有人有一个简单的方法来理解例子?例如,在上面的解释中,什么是文字字节,什么是匹配?当我们刚开始压缩时,我们怎么能有一个解码的输出缓冲区呢?什么长度?
这里的解释对我来说也是难以理解的。
一个简单的例子会很好,除非你有更好的解释方法。
发布于 2014-01-15 15:54:03
首先,阅读LZ77,这是正在使用的核心方法。文本描述了在前面的数据中编码一系列文字和字符串匹配的特定方法。
匹配是当未压缩数据中的下一个字节出现在先前解压缩的数据中时。因此,不是直接发送这些字节,而是发送长度和偏移量。然后向后偏移字节,并将长度字节复制到输出。
是的,你不能在流的开头有匹配。你得从文字开始。(除非有预先设置的字典,这是另一个主题。)
https://stackoverflow.com/questions/21138171
复制相似问题