我正在尝试创建服务调用getBytes(x)
,其中x
是响应主体的大小(以字节为单位)。问题是我无法关闭服务器响应的gzipping。所以我需要弄清楚如何在gzip压缩时创建一个大小为x
字节的字符串。我的字符串是1个字符= 1个字节。有关如何做到这一点的任何建议吗?
答案 0 :(得分:1)
蛮力方法是在字符串中添加1个随机字节,gzip,测量长度直到它为x。
为了改进它,你可以进行二进制搜索 - 如果它少于需要,你加入字符串的增量的两倍,或者如果它太大则除以增加字符串的2个大小,增量字符串是附加应该每次都是随机生成的。
答案 1 :(得分:1)
你不能总是得到X,但你可以在几个字节内得到。 This code是如何做到这一点的一个例子。它使用三次压缩传递,在两次之间使用两次解压缩。解压缩过程最多可处理X个压缩字节或略小于X个压缩字节,以查看在下一次压缩过程中要提供多少未压缩数据。