可以在没有RAM的情况下实际工作的解压缩算法(如果可能的话,LZ)

时间:2015-12-08 21:48:31

标签: c assembly embedded compression

编辑:我试着改写一下,以便尽可能清楚地说明这一点:)

我需要找到一个合适的方法/选择合适的压缩来在ROM中存储一团数据(比如大约900KB),其中可用空间量仅为700KB左右。如果我使用一些现代压缩工具(例如WinZIP / WinRAR)压缩blob,我可以轻松实现所需的压缩。

这里的问题是解压缩将在非常非常非常有限的硬件上进行,我无法承受超过几个字节的RAM(比如说不超过100个字节,为了它而。)

我已经尝试过RLE'数据......数据几乎不会压缩。

当我正在尝试更改数据blob格式以便它可能具有更多冗余并实现更好的压缩率时,我同时寻求一种压缩方法,使我能够在有限的硬件上解压缩。我对压缩算法知之甚少,所以我正在寻求建议/指针继续我的追捕。

谢谢!

最初的问题是“我需要有关解压缩算法的信息/指针,这些算法可以在不使用未压缩数据的情况下工作,因为在解压缩后它将无法使用.LZ之类的方法仍然是首选。” < / p>

1 个答案:

答案 0 :(得分:2)

我担心这个话题太过分了。

LZW使用的大小状态与保留一片未压缩数据没有太大区别。即使状态是恒定的并且从ROM读取,使用寄存器处理它似乎也很困难。有许多不同的算法可以使用常量状态,但如果你真的没有RAM,那么只能使用最基本的算法。

查找RLE,运行长度编码。

编辑:好的,没有滑动窗口,但如果你可以访问ROM,100字节的RAM为你提供了很多可能性。你想在汇编中实现它,所以坚持使用非常简单的算法。 RLE加上字典。根据您的要求,算法的选择应该基于您需要解压缩的数据类型。