gzip数据不能用uncompress来解压(它只支持compress压缩的数据),但是网站返回的gzip压缩数据,可以用deflate解压,有人说,compress内部也是调用inflate函数,不能解压可能是头部不同,但是也有人说,这是3中压缩格式。

解决方案 »

  1.   

    用zlib解压gzip数据int UnzipData(BYTE *s, int iSLen, BYTE *d, unsigned long *iDLen)
    {
    int err;   
    z_stream d_stream;   
    memset(&d_stream, 0, sizeof(z_stream));    d_stream.next_in = s;
    d_stream.avail_in = iSLen;  
    d_stream.next_out = d;  
    d_stream.avail_out = *iDLen; err = inflateInit2(&d_stream, -MAX_WBITS);
    if(err != Z_OK) return(err); d_stream.next_in += 10L; // 跳过GZip文件头 err = inflate(&d_stream, Z_FINISH);
    if (err != Z_STREAM_END) 
    {
    inflateEnd(&d_stream);
    return err == Z_OK ? Z_BUF_ERROR : err;
    } *iDLen = d_stream.total_out; 
    err = inflateEnd(&d_stream);  
    return(err);
    }