首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java压缩,用Python解压缩?

用Java压缩,用Python解压缩?
EN

Stack Overflow用户
提问于 2016-10-25 18:23:26
回答 1查看 3.1K关注 0票数 2

我试图在我的Android应用程序(Java)中压缩一个字符串,然后用Python在服务器上解压缩它。我尝试使用通货膨胀器类,但是在python端得到了一个" Error : Error -3,同时解压缩数据:不正确的标头检查“。在python方面,我使用zlib解压缩:

代码语言:javascript
运行
复制
data_string = zlib.decompress(compressed_string)

在Android方面,我们使用平移器压缩:

代码语言:javascript
运行
复制
String stringData = commentData == null ? sleepData.toString() : sleepData.toString() + commentData.toString();

byte[] bytes = stringData.getBytes("UTF-8");
int length = bytes.length;
Deflater deflater = new Deflater();
deflater.setInput(bytes);
deflater.finish();
byte[] compressedBytes = new byte[length];
deflater.deflate(compressedBytes);
deflater.end();

如何在python中解压缩应用程序发送的字符串?

谢谢!

编辑:这就是我们从Android发送的内容,并输入了解压缩命令:(圆点表示的只是更多相同的-有很多零,最后还有一些"0b's“:"78efbfbdefbfbdefbfbdefbfbd6e1b2....efbfbd190000000.....0000‌​000000000b0b0b0b0b0b‌​0b0b0b0b0b )。

我们尝试过的事情:

- data_string =zlib.decompress(解密,-zlib.MAX_WBITS),它提供一个新的错误:"Error -3同时解压缩数据:无效存储的块长度“

-- data_string = zlib.decompressobj(decrypted,15+32)和data_string = zlib.decompress(compressed_string,16+zlib.MAX_WBITS),它们都给出了初始错误“无效头检查”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-25 18:40:51

16+zlib.MAX_WBITS15 + 32添加为解压缩中的第二个可选wbits arg:https://docs.python.org/2/library/zlib.html#zlib.decompress

data_string = zlib.decompress(compressed_string, 16+zlib.MAX_WBITS)

编辑:根据您如何将压缩字节传递给Python,您可能会遇到Python如何读取压缩字节的问题。

我建议在Java中的压缩字节上使用Base64编码,然后用base64解码这些字节,然后在这种情况下对这些字节进行解压缩。

爪哇:

代码语言:javascript
运行
复制
String inputString = "blahblahblah";
byte[] input = inputString.getBytes("UTF-8");

// Compress the bytes
byte[] output = new byte[100];
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
compresser.end();
System.out.println(Base64.getEncoder().encodeToString(output)); 

Python:

代码语言:javascript
运行
复制
import base64
import zlib
base64_binary = b"eJxLyknMSIJiAB8CBMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
deflate_bytes=base64.decodebytes(base64_binary)
zlib.decompress(deflate_bytes)
# b'blahblahblah'

相关信息:

How can I decompress a gzip stream with zlib?

Python decompressing gzip chunk-by-chunk

Byte Array in Python

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40247057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档