栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python:Inflate和Deflate实现

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:Inflate和Deflate实现

这是MizardX答案的附加组件,提供了一些说明和背景。

参见http://www.chiramattel.com/george/blog/2007/09/09/deflatestream-block-
length-does-not-
match.html

根据RFC 1950,以默认方式构造的zlib流包括:

  • 2字节的标头(例如0x78 0x9C)
  • 放气流-参见RFC 1951
  • 未压缩数据的Adler-32校验和(4个字节)

C#

DeflateStream
在放气流上工作(您猜对了)。MizardX的代码告诉zlib模块数据是原始的deflate流。

观察结果:(1)有人希望C#的“放气”方法产生更长的字符串仅在输入短时才会发生(2)是否使用未使用Adler-32校验和的原始放气流?有点冒险,除非用更好的东西代替。

更新

错误信息

Block length does not match with its complement

如果您尝试使用C#充入一些压缩数据

DeflateStream
并收到该消息,则很有可能将其提供给zlib流,而不是deflate流。

请参阅如何在文件的一部分上使用DeflateStream?

还将错误消息复制/粘贴到Google搜索中,您将获得无数次点击(包括此答案前面的几则),说的差不多。

Deflater

“网站”使用 的Java … C#DeflateStream“非常简单,并且已经针对Java实现进行了测试”。网站正在使用以下哪些可能的Java
Deflater构造函数?

public Deflater(int level, boolean nowrap)

使用指定的压缩级别创建一个新的压缩器。如果’nowrap’为true,则将不使用ZLIB标头和校验和字段以支持在GZIP和PKZIP中使用的压缩格式。

public Deflater(int level)

使用指定的压缩级别创建一个新的压缩器。压缩数据将以ZLIB格式生成。

public Deflater()

使用默认压缩级别创建一个新的压缩器。压缩数据将以ZLIB格式生成。

*丢弃2字节的zlib标头和4字节的校验和后 *的单行压缩器

uncompressed_string.enpre('zlib')[2:-4] # does not work in Python 3.x

要么

zlib.compress(uncompressed_string)[2:-4]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号