【发布时间】:2019-04-06 08:09:30
【问题描述】:
我正在对 Gameboy Advance 的游戏进行逆向工程,我注意到原始开发人员编写的代码有两个系统调用来使用 Huffman 和 lz77(按此顺序)解压缩关卡。
但为什么要使用 Huffman + lzZ7?这种方法有什么好处?
【问题讨论】:
-
LZ77 的输出(长度、距离、文字符号……)通常不是均匀分布的(有些出现的频率更高,有些则更少)。您可以使用可变长度代码(例如 Huffman)更有效地对其进行编码,从而获得更好的压缩效果。
-
DEFLATE 算法同时使用 Huffman 和 LZ77(原因与 Dan Mašek 提到的相同)。开发人员是否可能实际上使用 DEFLATE,只是为了能够重用经过测试和调试的软件,而不是从头开始编写新的东西?
-
@DavidCary 是的,这是可能的。也许开发人员只是重新使用了已经使用这些算法的软件。你能在下面写一个答案,以便我批准吗?我想结束这个问题。
-
@DanMašek 你也一样,拜托。你能在下面写一个答案,以便我批准吗?我想结束这个问题。
标签: compression huffman-code game-boy-advance lz77