【发布时间】:2019-04-06 22:19:34
【问题描述】:
我打算对通过慢速串行接口传输的数据流使用压缩。 解压应该在资源有限(无操作系统、无线程、有限内存)的低成本微控制器上进行。
在之前的类似配置中,我使用了 zlib 的 puff.c,但在这种情况下,a 有一个缓冲区来存储之前的所有数据,并且可以一次全部膨胀。
在我的实际情况中,我没有足够的内存来存储这些缓冲区,所以我需要逐步膨胀数据。 因此,我需要能够在每次新数据到达时调用它,而不是让 puff 在缓冲区上工作,从而在后续调用之间保持内部状态。
在我开始深入研究 zlib 或 zlibs puff.c 之前,有人知道这类问题是否已经在某个地方解决了吗?
【问题讨论】:
-
发送前是否需要即时压缩或离线压缩?
-
“查找库”问题在 SO 上是题外话,而且您已经找到它:ZLIB 使用流接口并且完全能够使用小缓冲区对流进行膨胀。 zlib.net/zlib_how.html 的 ZLIB 使用示例准确地展示了如何使用固定大小的缓冲区对流进行膨胀 - 该示例使用 16Kb 但它可以更小(设置
CHUNK大小)。完整代码在zlib.net/zpipe.c。