C 阵列压缩算法

C 阵列压缩算法,c,compression,C,Compression,我有一个10345字节的数组,我想先压缩数组,然后再解压,请建议我压缩算法,可以减少数组的大小。我使用的是c语言,数组是无符号字符类型 有人能为C/C++推荐一种通用压缩算法(或库)吗? 这篇文章是一个社区维基。我不想在这个问题上有任何意见——我已经投票结束了这个问题 要压缩的字节数与压缩算法的选择关系不大,尽管它确实会影响实现。例如,当要压缩的字节数少于2^15字节时,如果使用ZLib,则需要指定小于15的压缩级别。Zlib中的压缩级别(这两个参数之一)控制“回望”字典的深度。如果您的文件短于

我有一个10345字节的数组,我想先压缩数组,然后再解压,请建议我压缩算法,可以减少数组的大小。我使用的是c语言,数组是无符号字符类型

有人能为C/C++推荐一种通用压缩算法(或库)吗?



这篇文章是一个社区维基。我不想在这个问题上有任何意见——我已经投票结束了这个问题

要压缩的字节数与压缩算法的选择关系不大,尽管它确实会影响实现。例如,当要压缩的字节数少于2^15字节时,如果使用ZLib,则需要指定小于15的压缩级别。Zlib中的压缩级别(这两个参数之一)控制“回望”字典的深度。如果您的文件短于16k字节,那么32k回溯字典将永远不会占满一半;在这种情况下,与将ZLib设置为“max”相比,在压缩的1/15边的回望中使用更少的指针位

重要的是数据的内容。如果您发送的图像大部分是背景图像,则可能需要运行长度编码(例如,Windows.BMP使用)

如果您发送的主要是英文文本,那么您希望可以使用ZLib之类的工具,它实现了哈夫曼编码和LZW风格的回溯字典压缩

如果您的数据已加密,则尝试压缩将不会成功


如果您的数据是特定类型的信号,并且您可以容忍某些细节损失,那么您可能希望将其转换为频率空间并仅发送主分量。(例如,JPEG、MP3)

@Heath,真正的问题是什么?@Heath:你今天看起来有点痒。@Heath Hinnucut:治疗坏心情的推荐方法:0。正在关闭PC 1。使用打孔袋2。冲刺几英里。3.举重。这种“每个人都是白痴”的习惯已经过时了。@Heath如果人们知道他们在谈论什么,他们就不会真的要问这个问题了,是吗?@SigTerm--哦,这是未签名的char。我猜这意味着无符号字符数组的内容可以通过Zlib压缩。天哪,我不知道。@Hans-哦,是的,我知道。曾经用过zlib吗?@Heath Hunnicutt:老兄,我真的很推荐spriting/punching bag。更令人兴奋。@SigTerm:你的用户名是什么,我希望你告诉我“控制自己”来缓解压力。:)顺便说一句,1960年,美国政府精神病医生埃里克·伯恩(Eric Berne)发现,通过暴力升华的人容易被谋杀。所以我会把出气筒传给你。-1我必须同意希思的意见。委婉地说,这不是回答,因为问题不完整。也许OP不应该考虑压缩,这可能是错误的方法。如果是稀疏填充的数组,则列表或树可能是更好的数据结构,如果是“随机”数据,则通用压缩器将无法压缩任何其他数据。这个问题缺乏信息,无法给出有意义的答案。@Josh——我的回答基本上解释了我投票结束的原因。如果你读了我的回答,你会发现它非常模糊和笼统。对于这样一个问题的任何答案都需要得到证实。OP甚至没有说明他是否想要无损,尽管这是一个公平的假设…@Josh-不,我没有说这不是一个答案。这是一个答案。如果你读了它,你可能会学到一些东西。但这不仅仅是对这个问题的回答。这是对“我到底在说什么?”这一元问题的回答,所以,不,不是我自己承认的。只有通过你的“判断力”,这对你来说是一个很好的承认。你对我的看法显然有失偏颇。客观地说,上面的课文确实回答了OP。所以请你自己判断并处理它。@Josh:看看这里的两个答案。这两个答案中哪一个更模糊和笼统?你是认真的吗?至于meta,就是讨论SO,而不是讨论SO问题。当然,你已经知道了?这实际上是一个比另一个好得多的答案——关键部分是“要压缩的字节数与压缩算法的选择关系不大……数据的内容才是最重要的。”。从某种意义上说,没有通用的压缩算法——只有具有有趣失败案例的扩展算法。@Josh:我确实意识到我批评自己的答案是“非常模糊和笼统的”。对于这个提出得不好的问题,任何答案都必须是“非常模糊和笼统的”。这就是为什么我投了反对票。但如果如此坚持这个问题必须存在于语料库中供参考,至少答案应该说一些有用的东西。