2

我有一个 4KB 的缓冲区,其中包含类似 JSON 格式的数据。我需要向它添加更多信息(最多可以说是 3 倍),但我必须适应这一小块内存。我正在考虑使用 libZ 来压缩文本,但我担心它不会表现良好,因为数据主要由一些独特的子字符串组成。在这种情况下你会推荐什么?谢谢,克里斯

4

2 回答 2

4

考虑一个包含多达 32K 字符串的固定字典,这些字符串您希望出现在数据中。您将使用zlibdeflateSetDictionary()andinflateSetDictionary()在每一端(分别是数据的发送者和接收者)在两端使用相同的字典。这可能会为您提供所需的压缩。如果没有字典,您不太可能使用如此少量的数据获得这种压缩。

于 2012-08-15T01:27:45.387 回答
0

如果您真的想坚持使用压缩,那么使用利用数据特定结构的自定义字典的压缩算法将表现最佳。我用 SharpZipLib 实现了类似的东西。

如果您想在缓冲区中存储更多数据并且不坚持使用类似文本的数据压缩,请考虑使用二进制协议,例如 Google 的 Protocol Buffers。

更新

@Mark 的回答概述了如何将自定义字典与 zlib 一起使用。

于 2012-08-15T01:28:30.357 回答