该数据存储在一个数组中(使用 C++),并且是 125 位的重复,每个位彼此不同。它最后还有 8 条 12 个 ASCII 字符的消息。请建议我是否应该在阵列内使用差分压缩,如果是的话如何?
或者我应该对整个阵列应用其他一些压缩方案吗?
该数据存储在一个数组中(使用 C++),并且是 125 位的重复,每个位彼此不同。它最后还有 8 条 12 个 ASCII 字符的消息。请建议我是否应该在阵列内使用差分压缩,如果是的话如何?
或者我应该对整个阵列应用其他一些压缩方案吗?
通常,您可以压缩具有某种可预测性或冗余的数据。由于需要共享选定的字典,基于字典的压缩(例如 ZIP 样式算法)传统上不能很好地处理小块数据。
过去,当我以某种可预测的模式压缩非常小的数据块时,我会使用带有自定义字典的SharpZipLib 。我没有将字典嵌入到实际数据中,而是将字典硬编码在每个需要(解)压缩数据的程序中。SharpZipLib 为您提供了两种选择:自定义字典,并将字典与数据分开。
同样,只有在您可以提前预测数据的某些模式以便您可以创建适当的压缩字典并且字典本身与压缩数据分开时,这才会有效。
你没有给我们足够的信息来帮助你。 但是,我强烈推荐Bell、Clery 和 Witten的《文本压缩》一书。不要被标题所迷惑;这里的“文本”只是意味着“无损”——所有技术都适用于二进制数据。因为这本书很贵,你可能会尝试通过馆际互借来获得它。
此外,不要忽视明显的 Burrows-Wheeler (bzip2) 或 Lempel-Ziv (gzip, zlib) 技术。这些技术中的一种很可能适用于您的应用程序,因此在研究替代方案之前,请尝试使用标准工具压缩您的数据。