gpt4 book ai didi

c - 低内存条件下的 LZW 压缩/解压缩

转载 作者:太空狗 更新时间:2023-10-29 17:01:56 24 4
gpt4 key购买 nike

任何人都可以指点我如何在低内存条件下(< 2k)实现 lzw 压缩/解压缩。这可能吗?

最佳答案

大家都在用的zlib库,臃肿等等问题(针对嵌入式)。我很确定它不适合你的情况。我有更多的内存,可能是 16K,但无法适应。它分配和归零大块内存并保留内容的副本等。该算法也许可以做到,但找到现有代码是一个挑战。

我选择了 http://lzfx.googlecode.com解压缩循环很小,它是依赖于先前结果的旧 lz 类型压缩,因此您需要访问未压缩的结果...下一个字节是 0x5,下一个字节是 0x23,接下来的 15 个字节是 15 200 字节前的副本,接下来的 6 字节是 127 前的副本...较新的 lz 算法是基于可变宽度表的,它可以很大或增长,具体取决于实现方式。

我正在处理重复数据并试图将几 K 压缩到几百,我认为压缩大约是 50%,不是很好但是完成了工作并且解压缩例程很小。上面的 lzfx 包很小,不像 zlib,像两个主要功能,代码就在那里,而不是几十个文件。您可能会更改缓冲区的深度,如果您愿意,也许可以改进压缩算法。我确实不得不修改解压缩代码(可能是 20 或 30 行代码),它是指针很重,我将其切换为数组,因为在我的嵌入式环境中,指针位于错误的位置。 Burns 可能是一个额外的寄存器,这取决于你如何实现它和你的编译器。我也这样做了,这样我就可以抽象出字节的提取和存储,因为我将它们打包到不可字节寻址的内存中。

如果您发现更好的东西,请在此处发布或通过 stackoverflow 联系我,我对其他嵌入式解决方案也很感兴趣。我搜索了很多,上面是我找到的唯一有用的,我很幸运,我的数据可以使用该算法压缩得足够好......目前。

关于c - 低内存条件下的 LZW 压缩/解压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3203321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com