.LZS 文件是否可以以 1 位开头并且仍被视为 LZS 压缩?

问题描述 投票:0回答:1

我用Java编写了一个程序,用于压缩和解压缩LZS编码数据。我所说的LZS压缩算法就是这篇论文中描述的算法:

https://web.archive.org/web/20220301223828/http://masters.donntu.org/2003/fvti/boykov/library/lzs.pdf

我编写这个程序是为了解压缩我有权访问的 LZS 文件。然而,在尝试解压缩它时,程序抛出了异常。我在 FreeFileViewer 中查看了 LZS 文件,几乎立刻就发现了问题。文件的第一个字节是 F3(十六进制编码)。用二进制表示,即 11110011。换句话说,文件以 1 位开头。

根据我理解算法的方式,LZS压缩数据应该总是以0位开始,因为数据的第一个字节总是作为原始字节输出(0后面跟着该字节的正常8位) 。因此,LZS 文件不应该以 1 位开始。

我的理解有误吗?实际上,.LZS 文件是否可以以某种方式以像 F3 这样的字节开头(并且实际上仍然是真正的 LZS 编码),或者这是否只是表明有人只是简单地选择将文件另存为 LZS 文件,即使数据实际上没有经过LZS压缩?

file compression lossless-compression lz77
1个回答
0
投票

压缩软件可能假设历史缓冲区已初始化为全零并且可用于匹配,因此第一个匹配将引用一串零。

© www.soinside.com 2019 - 2024. All rights reserved.