LuatOS的fastlz压缩技术——为嵌入式系统赋能的数据压缩方案

在物联网与边缘计算场景中,数据压缩是优化带宽与存储的核心手段。LuatOS所集成的fastlz压缩库,凭借其高效率与低资源消耗特性,为嵌入式设备提供了可靠的压缩能力。本文将介绍其核心API及典型应用场景,帮助开发者充分发挥其潜力。

一、概述

FastLZ 和 miniz 都是流行的压缩库,但它们在设计目标、压缩算法、性能特点等方面有显著区别,适用于不同的应用场景。

FastLZ 是高效且小巧的开源压缩库,主要用于实现基于 LZ77 算法的字节对齐数据压缩。

LZ77(Lempel-Ziv 1977)是数据压缩领域的一种基础方法,其核心思想是通过查找源数据中的重复模式来减少存储空间。

适用于压缩文本/段落序列、原始像素数据序列或具有大量重复的任何其他数据块。但是不打算用于图像、视频和其他通常已经以最佳压缩形式存在的格式的数据。

FastLZ 的重点是非常快速的压缩和解压缩。

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

miniz的主要特点包括:

1、支持zlib兼容的压缩和解压缩。

2、单个源文件实现,易于集成。

3、小的内存占用,适合资源受限的环境。

4、支持流式压缩和解压缩。

压缩比, miniz的压缩比要好于fastlz

总结:FastLZ 是 "速度优先"的轻量选择,miniz 是 "兼容与压缩率优先" 的通用选择。

二、核心示例

1、核心示例是指:使用本库文件提供的核心API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

image

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;

如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;

fastlz核心库没有常量。

四、函数详解

4.1 fastlz.compress(data, level)

快速压缩,需要内容比较小(只需要32k+原始数据大小)

参数

data
image

level
image

**返回值 **local cdata = fastlz.compress(data, level)

cdata
image

示例
image

4.2 fastlz.uncompress(data, maxout)

快速解压

参数

data
image

maxout
image

返回值 local udata = fastlz.uncompress(data, maxout)

udata
image

示例
image

五、模组支持说明

支持LuatOS开发的模组中:

Air780EPM不支持此功能,Air78080E/EG支持此功能;

Air700ECH/Air780EHN/EHU/EHM/EHV/EGH/Air8000的11号、12号、111号、112号固件不支持此功能。

Air8101/A/Air6101/A的1号、2号、3号固件都支持此功能。

今天的内容就分享到这里了~

posted @ 2026-02-11 16:53  电子老师傅  阅读(25)  评论(0)    收藏  举报