我打算对通过慢速串行接口传输的数据流使用压缩。
解压应该在资源有限(没有操作系统,没有线程,内存有限)的低成本微控制器上进行。
在之前的类似配置中,我使用了zlib的puff.c,但在这种情况下,a有一个缓冲区存储之前的所有数据,并且可以一次全部膨胀。
在我的实际情况下,我没有足够的内存来存储这种缓冲区,所以我需要一步一步地膨胀数据。
因此,与其让puff处理缓冲区,我需要能够在每次新数据到达时调用它,保持后续调用之间的内部状态。
在我开始深入zlib或zlibs puff.c之前,有人知道这些问题是否已经在某个地方解决了?

最佳答案

.GIF文件格式压缩算法(LZW,LZ78的变体)几乎只需要在内存中维护一个哈希表。当表填满时,它被清空,并且过程重复,这意味着表不会无限增长。也不需要保留压缩数据。其他州几乎不需要维护。有了这样的算法(也许,减少了哈希表的大小),您可以在数据传入时对其进行解压缩。
我没有研究过其他的LZ算法,但我希望(部分或全部?)它们的性质相似。

08-16 13:45
查看更多