我通过套接字将数据从python发送到java。
所以在python 2.7方面我有:
s = "this is test str"
compressed = s.encode('zlib')
push_to_tcp_socket(compressed)
所以我需要在java端恢复初始字符串。我怎么能这样做?
答案 0 :(得分:0)
您需要发送字符串的长度,或者关闭连接,以便知道最后一个字节的位置。
最有可能帮助您的类是DeflatorInputStream,您可以在读取字节后使用它。这是zlib类的裸包装器。我没有测试它与python一起使用,但它是你最好的选择。
您可以尝试其他压缩,如Snappy或LZ4,它们具有跨平台支持。
答案 1 :(得分:0)
我假设您已经了解Java上的网络部分。您可以使用Inflater
类来获取javadocs中的字符串
// Decompress the bytes
Inflater decompresser = new Inflater();
decompresser.setInput(output, 0, compressedDataLength);
byte[] result = new byte[100];
int resultLength = decompresser.inflate(result);
decompresser.end();
//Then create string in java i assumed you are using python 2 and string is ASCII
String str = new String(result,"US-ASCII")