请问您的那个java和c++之间关于zip数据压缩和解压的问题解决了吗??我也正遇到这个问题,想请教一下

我是用java.util.zip包压缩了一段字符串,然后把得到的压缩后byte数组用数据流存储在了一个外部文件中,然后我用c++先读取出了文件中的byte数组,然后用zlib库用uncompress方法解压缩这一段byte数组,请问这样操作是否可行,我解压出来的数据只有第一个字符是对的,后面显示数据损坏了,求解
2026年09月19日 08:05
有4个网友回答
网友(1):

java用
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
//压缩数据并返回压缩后的长度
int compressedDataLength =compresser.deflate(output);

//分离压缩后的数据
byte[] encodestrig = new byte[compressedDataLength];
System.arraycopy(output, 0,
encodestrig, 0, compressedDataLe

服务器c++:
Byte buf[1024];
memset(buf,0,1024);
memcpy(buf,strdata.c_str(),strdata.size());

Byteodata[1024];
memset(odata,0,1024);
uLongnodata=1024;
zdecompress(buf,strdata.size(),odata,&nodata);
这个完全能够解决。

网友(2):

这个貌似处理不了
首先java的压缩算法和C++的压缩算法可能不同
其次解压缩的时候尽量使用 二进制 打开文件读取数据
最大的问题就在于 C++ 的 数据类型在不同的机器上 字节是不同的,java却是相同的,所以一般用什么压缩就用什么解压

网友(3):

首先你得搞清楚:Java的压缩/解压算法和C++中的压缩解压算法是不是一样,不是的话很定不行。他用的算法不一样的话(就像你用ios/android你可以知道平台不一样,有些东西是不只是的)
然后你可找C++中和java中那个压缩算法一样的方法来解压!

网友(4):

应该是两者默认的格式不同吧