使用预设字典独立压缩许多相似的小二进制文件

使用预设字典独立压缩许多相似的小二进制文件

我需要压缩许多类似的小二进制数据包(每个数据包大约 1.5 KB)才能进行数据传输。我.xz在 306 MB 的样本上测试了格式,得到了 50% 的压缩率(压缩到 153 MB)。但是当我将样本拆分成 1.5 KB 的片段(数据包)并单独压缩时,我只能得到 1.3 KB 的档案。我认为 1.5 KB 数据包中的重复字段较少导致压缩率较差。一个合理的想法是提取并预设一个大的公共字典进行压缩,以近似单个大包的情况。这里有一个关于预设字典的解释:

预设字典在压缩许多相似的、相对较小的数据块时非常有用。预设字典应包含压缩文件中出现的典型字符串。最可能的字符串应位于预设字典的末尾附近。用于压缩的预设字典也需要用于解压
                        。—来源

但是我找不到实现这个想法的方法。为了满足压缩率要求 62%,只有基于 LZMA 的算法(.xz, .7z)才能满足要求,我刚找到了一种方法来设置预设词典,但我找不到任何方法来计算/构建字典,特别是因为数据是二进制的。

我该如何计算/构建预设词典?或者有没有更好的办法来压缩这些小的二进制数据包?


澄清:数据每次生成 1.5 KB,需要立即压缩和传输,而不是一次性传输多个数据包。这是实时数据,不能等到批量传输。但我有 306 MB 的数据包数据样本,可以分析数据包的特征/模式。

相关内容