gpt4 book ai didi

c++ - 不断增长的缓冲区的累积压缩(c++、zlib)

转载 作者:行者123 更新时间:2023-11-28 01:54:06 33 4
gpt4 key购买 nike

我有一个随时间增长的缓冲区(字符串),我需要通过输入大小有限(4096 字节)的 channel 发送此缓冲区。通过此 channel 的通信成本很高,这就是发送压缩数据更好的原因。缓冲区的增长通过不同大小的 block 发生。这些 block 不能拆分或失去意义。

我实际上在 C++ 中使用 zlib 进行压缩,具有任意缓冲区大小限制。当达到此限制时,字符串将被压缩并通过 channel 发送。这可行,但不是最佳选择,因为对于不丢失信息而言,限制相当低( channel 输入限制为 4096 字节)。

我的想法是使用 zlib 构建一个具有不同大小压缩 block 的不断增长的压缩缓冲区,并在达到 channel 输入限制之前停止该过程。 zlib 是否允许使用不同大小的压缩 block ,或者我需要另一种算法?

最佳答案

最简单的解决方案是将带外数据包描述转换为带内格式。到目前为止,最简单的方法是当您的输入 block 不使用所有 256 个可能的字节时。例如。当值 00 不出现在 block 中时,它可用于在压缩之前分隔 block 。否则,您将需要一个转义码。

无论哪种方式,您都可以使用 block 分隔符压缩连续流。在接收端,您解压缩流、识别分隔符并重新组合 block 。

关于c++ - 不断增长的缓冲区的累积压缩(c++、zlib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848470/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com