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

LuatOS-SOC接口文档(air780E)--miniz - 简易zlib压缩

示例

-- 准备好数据
local bigdata = "123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw"
-- 压缩之, 压缩得到的数据是zlib兼容的,其他语言可通过zlib相关的库进行解压
local cdata = miniz.compress(bigdata) 
-- lua 的 字符串相当于有长度的char[],可存放包括0x00的一切数据
if cdata then-- 检查压缩前后的数据大小log.info("miniz", "before", #bigdata, "after", #cdata)log.info("miniz", "cdata as hex", cdata:toHex())-- 解压, 得到原文local udata = miniz.uncompress(cdata)log.info("miniz", "udata", udata)
end

常量

常量

类型

解释

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.COMPUTE_ADLER32

int

解压参数,是否强制校验adler-32

miniz.compress(data, flags)

快速压缩,需要165kb的系统内存和32kb的LuaVM内存

参数

传入值类型

解释

string

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

flags

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

返回值

返回值类型

解释

string

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

例子

local bigdata = "123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw"
local cdata = miniz.compress(bigdata)
if cdata thenlog.info("miniz", "before", #bigdata, "after", #cdata)log.info("miniz", "cdata as hex", cdata:toHex())
end

miniz.uncompress(data, flags)

快速解压,需要32kb的LuaVM内存

参数

传入值类型

解释

string

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

flags

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

返回值

返回值类型

解释

string

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

例子

local bigdata = "123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw"
local cdata = miniz.compress(bigdata)
if cdata thenlog.info("miniz", "before", #bigdata, "after", #cdata)log.info("miniz", "cdata as hex", cdata:toHex())local udata = miniz.uncompress(cdata)log.info("miniz", "udata", udata)
end
http://www.lryc.cn/news/216479.html

相关文章:

  • 一整套智慧工地源码,劳务实名制、施工安全管理、绿色施工、危大工程设备监测、视频AI识别功能
  • 世微 DC-DC平均电流双路降压恒流驱动器 LED车灯AP2813
  • ES6~ES13新特性(一)
  • 基于 Amazon EC2 和 Amazon Systems Manager Session Manager 的堡垒机的设计和自动化实现
  • RFID管理方案有效提升电力物资管理效率与资产安全
  • leetcode:389. 找不同
  • c 函数调用过程中,调用函数的栈帧一旦被修改,被调用函数则无法正确返回。( X )
  • 专为个人打造专注工作的便签APP工具推荐哪个
  • 代码随想录算法训练营第四十二天 | LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
  • Windows PowerShell 和 Linux BashShell 极简对比
  • 校验验证码是否过期(定时刷新验证码)
  • windows idea本地执行spark sql避坑
  • 在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作实现过程
  • 智能客服系统应用什么技术?
  • 亚马逊、美客多卖家测评:如何建立养号团队实现运营化式测评?
  • 苹果IOS系统webglcontextlost问题-解决方案
  • 供应链ERP之合同:创建、修订与模板
  • MySQL第二讲·表的创建与修改
  • springboot的循环依赖问题描述及解决方案
  • 当科技遇上神器:用Streamlit定制AI可视化问答界面
  • 毛泽东思想和中国特色社会主义理论概论平时作业四
  • 微信怎么设置自动通过好友申请?
  • 亲测解决Pytorch TypeError: object of type ‘numpy.int64‘ has no len()
  • 前端模拟实现可编辑的表格table插件
  • PerfectPixel 插件,前端页面显示优化工具
  • mysql迁移data目录(Linux-Centos)
  • linux-等保测评
  • 一、React基础知识
  • RocketMQ入门示例-生产者
  • 2023面试知识点三