什么是小数据的最佳压缩方案,如1.66kBytes?

时间:2010-05-23 20:42:12

标签: c++ lossless-compression

这些数据存储在一个数组中(使用C ++),每个数据的重复数为125比特。它最后还有8条消息,每条消息包含12个ASCII字符。请建议我是否应该在阵列中使用差分压缩,如果是这样的话?

或者我应该在整个阵列上应用其他压缩方案吗?

2 个答案:

答案 0 :(得分:3)

通常,您可以压缩具有某种可预测性或冗余性的数据。基于字典的压缩(例如ZIP格式算法)传统上不适用于小块数据,因为需要共享所选字典。

过去,当我使用可预测的模式压缩非常小的数据块时,我使用SharpZipLib和自定义词典。我没有将字典嵌入到实际数据中,而是在每个需要(解压缩)数据的程序中对字典进行了硬编码。 SharpZipLib为您提供了两个选项:自定义词典,并将词典与数据分开。

如果您可以提前预测数据的某些模式,那么这只会很有效,这样您就可以创建一个合适的压缩字典,并且字典本身可以与压缩数据。

答案 1 :(得分:0)

您没有向我们提供足够的信息来帮助您。但是,我强烈推荐Bell,Cleary和Witten出版的书Text Compression。不要被标题所愚弄;这里的“文本”只意味着“无损” - 所有这些技术都适用于二进制数据。因为这本书价格昂贵,你可能会试图通过馆际互借来获得这本书。

另外,不要忽视明显的Burrows-Wheeler(bzip2)或Lempel-Ziv(gzip,zlib)技术。这些技术中的一种很可能适用于您的应用程序,因此在研究替代方案之前,尝试使用标准工具压缩您的数据