当前位置: 首页 > news >正文

GNU zlib 压缩与解压文件详细介绍

GNU zlib 压缩与解压文件详细介绍

1.概述

zlib 模块为 GNU 项目的 zlib 压缩库中的许多函数提供了一个低级接口

2.使用内存数据压缩与解压

2.1.压缩与解压缩

使用 zlib 的最简单方法是将所有数据保存在内存中进行压缩或解压缩。

import zlib
import binasciioriginal_data = b'This is the original text.'
print('Original     :', len(original_data), original_data)compressed = zlib.compress(original_data)
print('Compressed   :', len(compressed),binascii.hexlify(compressed))decompressed = zlib.decompress(compressed)
print('Decompressed :', len(decompressed), decompressed)

运行结果

Original     : 26 b'This is the original text.'
Compressed   : 32 b'789c0bc9c82c5600a2928c5485fca2ccf4ccbcc41c8592d48a123d007f2f097e'
Decompressed : 26 b'This is the original text.'

2.2.压缩级别

zlib 支持几种不同的压缩级别,允许在计算时间成本和空间成本之间取得平衡。
默认压缩级别 zlib.Z_DEFAULT_COMPRESSION 对应于性能和压缩结果之间折中的硬编码值,这当前对应于级别 6

如该示例所示,对于给定输入,可以使用多个压缩级别来实现相同的尺寸减小。

import zlibinput_data = b'Some repeated text.\n' * 1024
template = '{:>5}  {:>5}'print(template.format('Level', 'Size'))
print(template.format('-----', '----'))for i in range(0, 10):data = zlib.compress(input_data, i)print(template.format(i, len(data)))

运行结果

python3 zlib_compresslevel.pyLevel   Size
-----   ----0  204911    1722    1723    1724     985     986     987     988     989     98

2.3.增量压缩和解压缩

内存的存储是有限的,对大文件进行压缩和解压操作时,系统需要足够的内存来同时保存驻留在内存中的未压缩和压缩内容,这个不太现实。因此我们选择增量压缩,使用 CompressDecompress 对象来逐步操作数据,这样整个数据集就不必全部纳入内存。

import zlib
import binasciicompressor = zlib.compressobj(1)with open('lorem.txt', 'rb') as input:while True:block = input.read(64)if not block:breakcompressed = compressor.compress(block)if compressed:print('Compressed: {}'.format(binascii.hexlify(compressed)))else:print('buffering...')remaining = compressor.flush()print('Flushed: {}'.format(binascii.hexlify(remaining)))

此示例从纯文本文件中读取小块数据并将其传递给 compress()。压缩器维护一个压缩数据的内部缓冲区。由于压缩算法取决于校验和和最小块大小,因此压缩器可能无法在每次接收到更多输入时返回数据。如果它没有准备好整个压缩块,则返回一个空字节字符串。当所有数据都被输入时,flush() 方法强制压缩器关闭最后一个块并返回其余的压缩数据

python3 zlib_incremental.pyCompressed: b'7801'
buffering...
buffering...
buffering...
buffering...
buffering...
Flushed: b'55904b6ac4400c44f73e451da0f129b20c2110c85e696b8c40dde
dd167ce1f7915025a087daa9ef4be8c07e4f21c38962e834b800647435fd3b90
747b2810eb9c4bbcc13ac123bded6e4bef1c91ee40d3c6580e3ff52aad2e8cb2
eb6062dad74a89ca904cbb0f2545e0db4b1f2e01955b8c511cb2ac08967d228a
f1447c8ec72e40c4c714116e60cdef171bb6c0feaa255dff1c507c2c4439ec96
05b7e0ba9fc54bae39355cb89fd6ebe5841d673c7b7bc68a46f575a312eebd22
0d4b32441bdc1b36ebf0aedef3d57ea4b26dd986dd39af57dfb05d32279de'

2.4.校验数据完整性

除了压缩和解压缩功能外,zlib 还包括两个用于计算数据校验和的函数,adler32() 和 crc32()。校验和都不是加密安全的,它们仅用于数据完整性验证。

import zlibdata = open('lorem.txt', 'rb').read()cksum = zlib.adler32(data)
print('Adler32: {:12d}'.format(cksum))
print('       : {:12d}'.format(zlib.adler32(data, cksum)))cksum = zlib.crc32(data)
print('CRC-32 : {:12d}'.format(cksum))
print('       : {:12d}'.format(zlib.crc32(data, cksum)))

两个函数都使用相同的参数,一个包含数据的字节字符串和一个可选值,用作校验和的起点。它们返回一个 32 位有符号整数值,该值也可以作为新的起始点参数在后续调用时传回,以生成 running 校验和。

python3 zlib_checksums.pyAdler32:   3542251998:    669447099
CRC-32 :   3038370516:   2870078631

相关文章:

GNU zlib 压缩与解压文件详细介绍

GNU zlib 压缩与解压文件详细介绍 1.概述 zlib 模块为 GNU 项目的 zlib 压缩库中的许多函数提供了一个低级接口 2.使用内存数据压缩与解压 2.1.压缩与解压缩 使用 zlib 的最简单方法是将所有数据保存在内存中进行压缩或解压缩。 import zlib import binasciioriginal_dat…...

离线环境轻量级自动化部署

流程图: 常规系统发布的痛点 服务器频繁重启,上面部署的应用服务不能随之重启,导致服务时常宕机应用手动部署相对比较麻烦,步骤繁琐应用发布环境取决于发布人本地环境,导致不同发布人每次发布环境不一致,导…...

In-context Learning

formulate the example query -> LLM -> answerno gradient descent and fine-tuning, no parameters updateadvantages: 提供了与LLM进行交流的可解释的接口,通过template和demonstration将人类知识和LLM更好的结合;更像人类的预测思维&#xff…...

【新2023】华为OD机试 - 最优调度策略(Python)

华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 最优调度策略 题目 在通信系统中有一个常见的问题是对用户进行不同策略的调度 会得到不同系统消耗的性能 假设由 N 个待串行用户,每个用户可以使用 A/B/C 三种不同的调度策略 不同的策略会消耗不同的系…...

Python列表系列之统计计算

Python也提供了一些内置函数去实现诸如统计、计算的功能,下面我们具体来看一下 基本语法 1、获取元素出现的次数 使用列表的count()方法可以获取元素在列表中出现的次数,语法格式如下: listname.count(obj) lisetname:列表的名…...

【蓝桥杯集训·每日一题】AcWing 1460. 我在哪?

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴二分查找哈希表一、题目 1、原题链接 1460. 我在哪? 2、题目描述 农夫约翰出门沿着马路散步,但是他现在发现自己可能迷路了! 沿路有一…...

一个不可忽视的重要能力

阅读本文大概需要 2.16 分钟。1、自我们开工后,年后第一场直播,场观二十万出头,以为是不是巧合还是卡 bug 了,就最近又测了下,发现连续几场直播下来,场观数据依旧很吓人,都是十几二十万&#xf…...

2023.2.6-2.12 AI行业周刊(第136期):住院

周末把父亲送到医院,安顿下来,这周还是决定做膝关节的手术了。 一辈子长期的劳累,加上前两年搬家时的辛苦,最终导致膝关节受损严重。 这两年来,走路每一步都很疼,纠结了很久,去了上海&#xf…...

听说2年以上的自动化测试都有16k+,4年10k的你还要等待奇迹吗?

个人简介学渣一枚,2017年6月某xx学校毕业。从事自动化测试已经4年,。2018年的时候,由于项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础所以很快就理解了Robot Framework框架的工作原理,…...

git 命令实战

大家好,我是 17。 今天和大家一起用前面学过的命令做过实践。 git 命令实战 你在分支 A,一个同事在分支 B fix 了一个bug。你不方便 merge 分支B,只想更新这个 fix bug 的提交。 最先想到的是 cherry-pick,但还有两个办法,git restore&am…...

基于机器学习LSTM的古代汉语切分标注算法及语料库研究 完整代码+数据+论文

完整代码:https://download.csdn.net/download/qq_38735017/87382302摘 要近年来,深度学习的浪潮渗透在科研和生活领域的方方面面,本文主要研究深度学习在自然语言处理,尤其是古汉语自然语言处理方面的应用。本文旨在利用计算机帮…...

魔百和M401A刷入Armbian系统EMMC开启wifi

文章目录一、Armbian系统写入U盘二、U盘内uEnv.txt文件修改三、盒子从U盘进行启动四、设置用户名和密码五、Armbian系统写入EMMC六、 重启系统reboot(不可以拔U盘)七、盒子关机拔出U盘八、插入USB无线网卡,连接wifi上次盒子刷了5.15版本的armbian系统,可…...

超实用的小红书内容营销策略分享!纯干货

抓住小红书内容流量密码就是掌握了财富,越来越多的品牌方和商家都在小红书上收获了相当可观的用户流量,如果你的小红书营销没有什么起色,那绝对是没有走对方向。 小红书是一个内容为王的平台,如果你还不懂下面这些小红书内容营销…...

高压放大器在介电泳效应的细胞分选研究中的应用

实验名称:高压放大器在介电泳效应的细胞分选研究中的应用研究方向:生物医学测试目的:细胞分选在分析化学和生物医药领域有着非常重要的应用。在众多的分选方法中,微流控分选方法以其响应速度快、样品需求少等优点成为研究热门。微…...

Redis三 高级篇-3. 最佳实践

《Redis三 高级篇-3. 最佳实践》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《Redis三 高级篇-3. 最佳实践》《Redis三 高级篇-3. 最佳实践》1、Redis键值设计1.1、优雅的key结构1.2、拒绝BigKey1.2.1、BigKey的危害1.2.2、如何发现BigKey①redis-cli…...

基于 VPX 总线的工件台运动控制系统研究与开发-以光刻运动台为例(一)

工件台系统是光刻机的关键子系统之一,工件台运动控制系统对实现光刻机性能指标具有至关重要的作用,因此研发工件台运动控制系统具有极其重要的工程应用价值。论文根据工件台控制系统必须具备的并行性、同步性和实时性等技术需求,建立了基于 V…...

回溯算法理论基础

目录什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中,回溯函数也就是递归函数,指…...

【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电)

【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电) 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解…...

AI算法创新赛-人车目标检测竞赛总结02

源码目录--AI0000026/ --models/ #存放原始模型文件 --scripts/ #存放模型编译、量化所用到的命令脚本,标签格式转换的脚本。 --data/ #存放B榜数据集102张图片 --bmodel/ #存放编译或量化生成的xxx.bmodel --test/ #存放执行推理的代码,会调用bmodel/中…...

Python 编程必备:盘点nginx和gunicorn的几大用法,建议收藏

程序员是新兴技术工种中比较高薪的一个,在互联网公司,程序员往往与秃头,压力大,找不到女朋友等等挂钩。 最近,最新技能类榜单出炉,这是一个关于程序员自己给自己贴的几个标签。 其中,不难看出…...

USB3.0移动硬盘启动Win7的方法(AHCI/AMD USB3.0/Win7)

古董电脑(intel处理器,无USB3.0接口)突然坏了,已经没有维修价值了,硬盘还是完好的。欲把硬盘拆下来,装到USB3.0硬盘盒上,然后在新电脑(AMD R5-4650G/A520)上从USB3.0硬盘盒上启动。 一、需要工具 SATA数据线PS/2鼠标…...

Python学习-----函数3.0(嵌套函数、闭包、装饰器)

目录 1.函数嵌套 2.闭包 3.装饰器 这一节,我会详细Python中讲解函数的进阶内容,包括嵌套函数、闭包和装饰器。一起来学习吧!!! 1.函数嵌套 概念:函数里面再定义一个函数 作用:当我们在一个多…...

最新版EasyRecovery数据恢复软件使用测评介绍

我们在逐渐适应信息电子化的同时,也有一些潜在的麻烦接踵而来,其中较为常见的就是文件和数据的保存问题。显然,设备的存储空间是有限的,这就不可避免地会出现数据被删除、覆盖或丢失的现象,如果丢失的是重要数据&#…...

关于知识图谱TransR

论文题目 Learning Entity and Relation Embeddings for Knowledge Graph Completion 论文链接 TransR 文中指出,不管是TransE还是TransH都是将实体和关系映射同一空间,但是,一个实体可能具有多个层面的信息,不同的关系可能关注…...

始于日志,不止于日志,Elastic Stack全面介绍

1、Elastic Stack是什么? 说Elastic Stack之前,先说一下ELK Stack。这个词相信很多人都是耳熟能详的,作为一个著名的日志系统解决方案,应用非常广泛。 “ELK”是三个开源项目的首字母缩写词:Elasticsearch、Logstash…...

FDX-B|EMID格式低频RFID 读卡模块LD6900技术选型与说明

FDX-B|EMID格式低频RFID 读卡模块LD6900是华翔天诚推出一款基于 RFID 无线射频识别技术的低频(LF)读卡模块,工作频率支持 134.2KHZ、125KHZ,符合 ISO 11784/5 国际标准,支持对 FDX-B、EMID 两种协议格式电子标签的读取…...

《SQL基础》11. 索引

SQL - 索引索引概述结构B-TreeBTreeHash思考分类语法SQL性能分析SQL执行频率慢查询日志profile详情explain执行计划索引失效情况范围查询索引列运算字符串不加引号模糊查询or连接条件数据分布影响使用规则最左前缀法则SQL提示覆盖索引前缀索引设计原则索引 概述 索引&#xf…...

【前端】进阶Mac OS软件商城页面_缤纷多彩的创意UI

非常漂亮的仿Mac OS界面&#xff0c;更改下参数就可以变成你需要的界面。 还可以一键更换背景主题 灵感来源于米科瓦伊加文齐奥夫斯基 附上css、html、js源码 下面是html文件 <!DOCTYPE html> <html lang"en" > <head><meta charset"…...

格创东智与金羽新能合作|先进工业互联网助力固态电池智能化运营

2022年12月&#xff0c;浙江金羽新能源科技有限公司&#xff08;以下简称金羽新能&#xff09;与格创东智签订战略合作框架协议&#xff0c;并在湖州安吉举行金羽新能固态电池MES项目启动会。 固态电池是一种使用固体电极和固体电解质的电池。相较传统锂电池&#xff08;液态电…...

软件测试面试刷题app包含了各种难题

软件测试的生命周期&#xff1a; V模型&#xff1a;与软件开发阶段呼应 软件开发&#xff1a;需求分析-->概要设计-->详细设计-->编码阶段软件测试&#xff1a;单元测试-->集成测试-->系统测试-->验收测试从基本流程的角度讲&#xff1a; 需求阶段&#xff…...

wordpress 快速填写qq/百度关键词优化和百度推广

一、示例概述本篇博客的示例比较简单&#xff0c;其实就是使用Runtime的方法交换来实现AOP面向切面编程。下方这两个文件就是我们本篇博客所涉及的核心文件。TestClass顾名思义就是我们的测试类&#xff0c;而TestClassLogging就是TestClass的切片&#xff0c;TestClassLogging…...

网站地图怎么做/网页模板下载

最近在用virtual box做实验&#xff0c;在设置中提示“需要禁用硬件虚拟化才能启动虚拟机”&#xff0c;确认按钮灰色&#xff0c;并且无法启动虚拟机。 于是重启&#xff0c;进到bios系统。 网上说按F2或者根据电脑上的提示再开机的时候一直按就能进入&#xff0c;我没进去。…...

后台企业网站模板/免费创建网站软件

AI在现实中的应用有很多&#xff0c;你有没有想过&#xff0c;它还可以进行文本纠错呢&#xff1f;传统的校对既耗时又枯燥&#xff0c;通过“AI纠错”&#xff0c;不仅能更快完成&#xff0c;还能提高准确度。那么AI“文本纠错”背后的原理是什么呢&#xff1f;和我一起看看吧…...

如何建设部网站查职称/营销网站建设流程

本文首发于个人微信公众号《andyqian》,期待你的关注&#xff5e;前言我们都知道&#xff0c;在计算机世界里&#xff0c;再复杂&#xff0c;再美的程序&#xff0c;到最后都会变成0与1。也就是我们常说的&#xff1a;二进制。二进制相信大家都很熟悉。与现实世界不同的是&…...

网站全屏视频怎么做/东莞seo优化排名

引子 最近有个虚拟练习项目&#xff0c;涉及到系统安全保障的设计&#xff0c;于是对安全保障这块做了一些更深入的了解。发现了很多有趣的东西&#xff0c;开阔了眼界。中间查了一些资料&#xff0c;于是我打算重新整理&#xff0c;用更加循序渐进&#xff0c;大家都能懂的方式…...

wordpress mysql版本/网站维护费用

今天来点硬核东西&#xff0c;进度调度概述&#xff0c;在讲调度之前&#xff0c;总是要吹一波水&#xff0c;其实我的吹水能力并不好&#xff0c;但是也没办法&#xff0c;相关专题的第一篇都是吹水中度过。 15.1 调度简介 我们现在的操作系统&#xff0c;基本都是多道程序设…...