编辑:我尝试重新表述,以便尽我所能使其更清晰:)
我需要找到一种合适的方式/选择合适的压缩方式来在 ROM 中存储大量数据(例如大约 900KB),而可用空间量仅为 700KB 左右。如果我使用一些现代压缩工具(例如 WinZIP/WinRAR)压缩 blob,我可以轻松实现所需的压缩。
这里的问题是,解压将在非常非常非常有限的硬件上进行,我无法承受超过几个字节的可用RAM(比如不超过100字节,为了它)。
我已经尝试过对数据进行 RLE 处理...数据几乎无法压缩。
虽然我正在尝试更改数据 blob 格式,以便它可能具有更多冗余并实现更好的压缩比,但我同时也在寻找一种压缩方法,使我能够在有限的硬件上解压缩。我对压缩算法的了解有限,因此我正在寻求建议/指示以继续我的寻找。
谢谢!
最初的问题是“我需要有关解压算法的信息/指针,这些算法可以在不使用未压缩数据的情况下工作,因为解压后将不可用。LZ 之类的方法仍然是首选。”
最佳答案
恐怕这不是主题,因为太宽泛了。
LZW 使用相当大的状态,这与保留未压缩数据的切片没有太大区别。即使状态是恒定的并且从 ROM 读取,仅用寄存器处理它似乎也很困难。有很多不同的算法可以使用常量状态,但如果你真的没有 RAM,那么只能使用最基本的算法。
查找 RLE,行程编码。
编辑:好吧,没有滑动窗口,但如果你可以访问 ROM,100 字节的 RAM 会给你很多可能性。您想在汇编中实现这一点,因此请坚持使用非常简单的算法。 RLE 加上一本字典。根据您的要求,算法的选择应基于您需要解压缩的数据类型。
关于c - 无需RAM即可虚拟工作的解压算法(如果可能的话LZ喜欢),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166658/