一、ZLIB解压工具简介

Zlib解压工具是一个广泛使用的压缩和解压缩库,主要用于处理数据的压缩和解压缩任务。Zlib使用的是DEFLATE算法,这是一种通用的压缩算法。它被应用在很多场景中,比如压缩文件、网络传输中的数据压缩、以及各种应用程序中的数据存储和读取。

Zlib的代码库相对小巧,因此在嵌入式系统和资源受限的环境中也能很好地使用。

详细细节可以参考:
https://www.cnblogs.com/LyShark/p/17861293.html

二、演示功能概述

本文主要演示如何对数据压缩解压。

三、准备硬件环境

此核心板的详细使用说明参考:
https://docs.openluat.com/air780e/product/

Air780E产品手册中的<<开发板Core_Air780E使用说明V1.0.5.pdf>>;核心板使用过程中遇到任何问题,可以直接参考这份使用说明pdf文档。

3.1 数据通信线

typec接口USB数据线即可。

3.2 PC电脑

WINDOWS系统。

四、准备软件环境

4.1 基本的下载调试工具

使用说明参考:
Luatools 工具使用说明:
https://docs.openluat.com/Luatools/

五、ZLIB解压操作软硬件资料

5.1 文档和工具:

最新版本下载链接:
https://docs.openluat.com/air780e/luatos/app/utils/zlib/

  • 780E模块使用固件:SDK&Demo-合宙文档中心,本demo使用的固件版本是:
    LuatOS-SoC_V1112_EC618_FULL.soc
  • 本教程使用的demo:
    https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/miniz
  • 将固件和脚本烧录到模块中;

  • 源码和固件已打包;

  • zlib-全部api地址,如果只看本demo的api直接看下面的5.2demo使用api介绍即可。

5.2 demo使用api介绍

使用常量

常量

类型

解释

miniz.WRITE_ZLIB_HEADER

int

压缩参数,是否写入zlib头部数据,compress函数的默认值

miniz.COMPUTE_ADLER32

int

压缩/解压参数,是否计算/校验adler-32

miniz.GREEDY_PARSING_FLAG

int

压缩参数,是否快速greedy处理,默认使用较慢的处理模式

miniz.NONDETERMINISTIC_PARSING_FLAG

int

压缩参数,是否快速初始化压缩器

miniz.RLE_MATCHES

int

压缩参数,仅扫描RLE

miniz.FILTER_MATCHES

int

压缩参数,过滤少于5次的字符

miniz.FORCE_ALL_STATIC_BLOCKS

int

压缩参数,是否禁用优化过的Huffman表

miniz.FORCE_ALL_RAW_BLOCKS

int

压缩参数,是否只要raw块

miniz.PARSE_ZLIB_HEADER

int

解压参数,是否处理zlib头部,uncompress函数的默认值

miniz.HAS_MORE_INPUT

int

解压参数,是否还有更多数据,仅流式解压可用,暂不支持

miniz.USING_NON_WRAPPING_OUTPUT_BUF

int

解压参数,解压区间是否够全部数据,仅流式解压可用,暂不支持

miniz.compress(data,flags)

作用:快速压缩,需要165KB的系统内存和32KB的LuaVM内存

参数

参数

传入值类型

解释

data

string

待压缩的数据,少于400字节的数据不建议压缩,且压缩后的数据不能大于32KB

flags

flags

压缩参数,默认是miniz.WRITE_ZLIB_HEADER,即写入zlib头部

返回值

返回值类型

解释

string

若压缩成功,返回数据字符串,否则返回nil

string.fromBase64(str)

作用:将字符串进行base64解码

参数

参数

传入值类型

解释

str

string

需要转换的字符串

返回值

返回值类型 解释

string

解码后的字符串,若解码失败则返回空字符串

miniz.uncompress(data,flags)

作用:快速解压,需要32KB的LuaVM内存

参数

参数

传入值类型

解释

data

string

待解压的数据,解压后的数据不能大于32KB

flags

flags

解压参数,默认是miniz.PARSE_ZLIB_HEADER,即解析zlib头部

返回值

返回值类型 解释

string

若解压成功,返回数据字符串,否则返回nil

六、代码示例介绍

6.1 解压数据

先将压缩过的字符串进行base64解码,然后再解压:

压缩数据然后解压:

七、功能验证

成功解压:

八、总结

本例程介绍了如何压缩和解压数据。

九、常见问题

9.1 解压数据不能超过多少?

解压后的数据不能大于32k。

Air780E软件指南:zlib解压示例的更多相关文章

  1. 【VC++技术杂谈008】使用zlib解压zip压缩文件

    最近因为项目的需要,要对zip压缩文件进行批量解压.在网上查阅了相关的资料后,最终使用zlib开源库实现了该功能.本文将对zlib开源库进行简单介绍,并给出一个使用zlib开源库对zip压缩文件进行解 ...

  2. zlib压缩解压示例

    #include <stdio.h> #include <string.h> #include <assert.h> #include "zlib.h&q ...

  3. linux之安装软件,压缩解压文件

  4. [zlib]_[0基础]_[使用Zlib完整解压zip内容]

    场景: 1. 解压文件一般用在下载了一个zip文件之后解压,或者分析某个文件须要解压的操作上. 2. 解压文件,特别是解压带目录的zip文件往往系统没有提供这类Win32 API,当然C#自带库能解压 ...

  5. Bandizip解压压缩软件

    上次重装系统以后,特别注意安装软件,在这里提一些比较好的 解压软件:Bandizip 这个是一个免费轻量级的软件,压缩解压速度快,没什么广告,推荐大家在官方下载 Bandizip下载网址 点击下载安装 ...

  6. MAC实用操作记录---使用命令执行文件上传下载解压打包与解包

    1.使用命令执行文件上传下载 https://www.cnblogs.com/sugartang/p/12743470.html 2.提示:打不开xx软件,在 OS X 安装软件打不开提示" ...

  7. SAPCAR 压缩解压软件的使用方法

    SAPCAR 是 SAP 公司使用的压缩解压软件,从 SAP 网站下载的补丁包和小型软件基本都是扩展名为 car 或 sar 的,它们都可以用 SAPCAR 来解压.下面是它的使用说明: 用法: 创建 ...

  8. python用模块zlib压缩与解压字符串和文件的方法

    摘自:http://www.jb51.net/article/100218.htm Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等. python中 ...

  9. linux的软件管理的rpm包和yum配置加tar解压包和安装编译./configuer

    软件管理 rpm包  和yum 1.软件形式 Linux系统的第三方软件,无论是应用软件还是工具软件,大多以以下两种形式之一发行: 源代码形式       预编译形式 获取的源代码形式的软件,需要对其 ...

  10. 利用zlib库进行zip解压

    1:到zlib官网上下载zlib,本文下载的是1.2.8的版本. 2:进行./configure,然后make. 3:进入zlib库中的contrib/minizip/路径下make,生成的miniz ...

随机推荐

  1. C# 将一个DataTable分解成多个DataTable

    今天在做项目时需要将一个DataTable分解成多个DataTable分批传入函数里面,于是在网上找寻了一番,修复了angle_greensky110  存在分表的缺陷的代码. 分表方法: /// & ...

  2. Ruby 学习笔记

    基本语法 变量 name = "Alice" age = 30 puts "Name: #{name}, Age: #{age}" var # 局部变量 @va ...

  3. Linux/macOS 查看网络接口

    Linux 显示网络设备的状态: $ nmcli device status DEVICE TYPE STATE CONNECTION enp0s5 ethernet connected Wired ...

  4. CoST: 时间序列预测中分离季节趋势特征的对比学习《CoST: CONTRASTIVE LEARNING OF DISENTANGLED SEASONAL-TREND REPRESENTATIONS FOR TIME SERIES FORECASTING》(时序预测、表征学习、对比学习、因果关系、分离趋势季节特征)

    2022/6/18 11:32,简单记录一下随笔(因为不写点东西,根本注意力不集中,看5分钟可能要摸鱼10分钟,还是要写点,突然发现,草稿箱里最早的一篇没写完的博客是去年的7月2日,救命啊,我拖了一年 ...

  5. IDEA如何自动导入依赖的jar包

    前言 我们在使用IDEA开发时,会引入第三方的jar包,这些第三方的jar包使我们可以快速的使用别人开发好的功能,而不用重复造轮子了. 这大大提高了我们的开发效率. 但是,有时候我们一下子需要导入太多 ...

  6. 【漏洞分析】20240507-SATURN:当闪电贷遇上有缺陷的通缩机制

    背景信息 2024 年 5 月 6 日,SATURN 代币遭受价格操控攻击,损失 15 BNB.攻击发生的原因是由于 SATURN 代币的代币通缩机制设计不合理,使得攻击者可以通过燃烧池子中的 SAT ...

  7. CF1661 Educational Codeforces Round 126 (Rated for Div. 2) 题解

    感觉,越来越拉胯了,有点难过,明天希望可以好好学习,好好准备考研!八成新的自己我来力! A Array Balancing 很明显的签到题,要求两个数组各自的相邻项差的绝对值最小,设\(mn=\min ...

  8. pytorch中y.data.norm()的含义

    import torch x = torch.randn(3, requires_grad=True) y = x*2 print(y.data.norm()) print(torch.sqrt(to ...

  9. docker镜像&容器管理

    1.拉取镜像 docker pull 拉取 MySQL8.0 和 tomcat 拉取MySQL8.0镜像 [root@localhost ~]# docker pull mysql:8.0 拉取tom ...

  10. 神经网络之卷积篇:详解残差网络(ResNets)(Residual Networks (ResNets))

    详解残差网络 ResNets是由残差块(Residual block)构建的,首先解释一下什么是残差块. 这是一个两层神经网络,在\(L\)层进行激活,得到\(a^{\left\lbrack l + ...