这是MizardX答案的附加组件,提供了一些说明和背景。
参见http://www.chiramattel.com/george/blog/2007/09/09/deflatestream-block- length-does-not- match.html
C#DeflateStream
在放气流上工作(您猜对了)。MizardX的代码告诉zlib模块数据是原始的deflate流。
观察结果:(1)有人希望C#的“放气”方法产生更长的字符串仅在输入短时才会发生(2)是否使用未使用Adler-32校验和的原始放气流?有点冒险,除非用更好的东西代替。
如果您尝试使用C#充入一些压缩数据DeflateStream
并收到该消息,则很有可能将其提供给zlib流,而不是deflate流。
还将错误消息复制/粘贴到Google搜索中,您将获得无数次点击(包括此答案前面的几则),说的差不多。
“网站”使用 … C#DeflateStream“非常简单,并且已经针对Java实现进行了测试”。网站正在使用以下哪些可能的Java Deflater构造函数?
public Deflater(int level, boolean Nowrap)
使用指定的压缩级别创建一个新的压缩器。如果’Nowrap’为true,则将不使用ZLIB标头和校验和字段以支持在GZIP和PKZIP中使用的压缩格式。
public Deflater(int level)
使用指定的压缩级别创建一个新的压缩器。压缩数据将以ZLIB格式生成。
public Deflater()
使用默认压缩级别创建一个新的压缩器。压缩数据将以ZLIB格式生成。
:
uncompressed_string.encode('zlib')[2:-4] # does not work in Python 3.x
要么
zlib.compress(uncompressed_string)[2:-4]