如何在gzip压缩时创建X大小的字符串?

时间:2014-01-03 18:38:54

标签: string algorithm gzip

我正在尝试创建服务调用getBytes(x),其中x是响应主体的大小(以字节为单位)。问题是我无法关闭服务器响应的gzipping。所以我需要弄清楚如何在gzip压缩时创建一个大小为x字节的字符串。我的字符串是1个字符= 1个字节。有关如何做到这一点的任何建议吗?

2 个答案:

答案 0 :(得分:1)

蛮力方法是在字符串中添加1个随机字节,gzip,测量长度直到它为x。

为了改进它,你可以进行二进制搜索 - 如果它少于需要,你加入字符串的增量的两倍,或者如果它太大则除以增加字符串的2个大小,增量字符串是附加应该每次都是随机生成的。

答案 1 :(得分:1)

你不能总是得到X,但你可以在几个字节内得到。 This code是如何做到这一点的一个例子。它使用三次压缩传递,在两次之间使用两次解压缩。解压缩过程最多可处理X个压缩字节或略小于X个压缩字节,以查看在下一次压缩过程中要提供多少未压缩数据。