跳转至

压缩解压缩

一、MINIZ 解压工具简介

miniz是一个单一文件的小型压缩库,它是zlib的一个替代品,专门为需要轻量级压缩解决方案的项目设计,它被设计成可以轻松地集成到项目中,并且具有最小的依赖性。

miniz的主要特点包括: 1. 支持zlib兼容的压缩和解压缩。 2. 单个源文件实现,易于集成。 3. 小的内存占用,适合资源受限的环境。 4. 支持流式压缩和解压缩。 5. 包含用于压缩和解压缩文件的简单API。

二、演示功能概述

演示如何对数据压缩解压。

三、准备硬件环境

参考:硬件环境清单第二章节内容,准备以及组装好硬件环境。

四、软件环境

在开始实践本示例之前,先筹备一下软件环境:

1. Luatools工具

2. 内核固件文件(底层core固件文件):LuatOS-SoC_V2003_Air8000;参考项目使用的内核固件

3. luatos需要的脚本和资源文件

脚本和资源文件点我查看demo地址

lib脚本文件:使用Luatools烧录时,勾选 添加默认lib 选项,使用默认lib脚本文件;

准备好软件环境之后,接下来查看如何烧录项目文件到Air8000核心板,将本篇文章中演示使用的项目文件烧录到Air8000核心板中。

六、代码示例介绍

6.1 解压数据

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

-- 压缩过的字符串, 为了方便演示, 这里用了base64编码
    -- 大部分MCU设备的内存都比较小, miniz.compress 通常在服务器端完成,这里就不演示了
    -- miniz能解压标准zlib数据流
    -- 将字符串进行base64解码
    local b64str = "eAEFQIGNwyAMXOUm+E2+OzjhCCiOjYyhyvbVR7K7IR0l+iau8G82eIW5jXVoPzF5pse/B8FaPXLiWTNxEMsKI+WmIR0l+iayEY2i2V4UbqqPh5bwimyEuY11aD8xeaYHxAquvom6VDFUXqQjG1Fek6efCFfCK0b0LUnQMjiCxhUT05GNL75dFUWCSMcjN3EE5c4Wvq42/36R41fa"
    local str = b64str:fromBase64()
    -- 快速解压
    local dstr = miniz.uncompress(str)

6.2 压缩数据然后解压:

-- 演示压缩解压
    local ostr = "abcd12345"
    -- 压缩字符串
    local zstr = miniz.compress(ostr)
    log.info("压缩后的字符串:",zstr:toHex())
    -- 解压字符串
    local lstr = miniz.uncompress(zstr)
    log.info("miniz","compress zstr",#zstr,"uncompress lstr data",lstr)

七、功能验证

成功解压:

八、总结

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

常见问题

1、解压数据不能超过多少?

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