gzip如何找不到两个相同的部分?

时间:2018-05-21 15:05:32

标签: compression zlib

我写了这样的代码

#include "zlib.h"
unsigned char dst[1<<26];
unsigned char src[1<<24];
int main() {
    unsigned long dstlen = 1<<26;
    srand (12345);
    for (int i=0; i<1<<23; i++) src[i] = src[i | 1<<23] = rand();
    compress(dst,&dstlen,src,1<<24);
    printf ("%d/%d = %f\n", dstlen, 1<<24, dstlen / double(1<<24));
}

试图压缩连接在一起的两个相同的2 23 字节部分。但结果是

16782342/16777216 = 1.000306

如何压缩此类规则的数据?

1 个答案:

答案 0 :(得分:0)

zlib中匹配字符串的最大距离为32,768字节。