今天我?guī)氲氖?a href="http://www.www27dydycom.cn/tags/ai/" target="_blank">Air780E 軟件中 zlib 解壓示例,希望大家有所收獲。
1、ZLIB解壓工具簡介
Zlib解壓工具是一個廣泛使用的壓縮和解壓縮庫,主要用于處理數(shù)據(jù)的壓縮和解壓縮任務(wù)。Zlib使用的是DEFLATE算法,這是一種通用的壓縮算法。它被應(yīng)用在很多場景中,比如壓縮文件、網(wǎng)絡(luò)傳輸中的數(shù)據(jù)壓縮、以及各種應(yīng)用程序中的數(shù)據(jù)存儲和讀取。
Zlib的代碼庫相對小巧,因此在嵌入式系統(tǒng)和資源受限的環(huán)境中也能很好地使用。
詳細(xì)細(xì)節(jié)可以參考:https://www.cnblogs.com/LyShark/p/17861293.html
2、演示功能概述
本文主要演示如何對數(shù)據(jù)壓縮解壓。
3、準(zhǔn)備硬件環(huán)境
此核心板的詳細(xì)使用說明參考:
https://docs.openluat.com/air780e/product/
Air780E產(chǎn)品手冊中的<<開發(fā)板Core_Air780E使用說明V1.0.5.pdf>>;核心板使用過程中遇到任何問題,可以直接參考這份使用說明pdf文檔。
3.1 數(shù)據(jù)通信線
3.2 PC電腦
WINDOWS系統(tǒng)。
4、準(zhǔn)備軟件環(huán)境
4.1 基本的下載調(diào)試工具
使用說明參考:
Luatools 工具使用說明:
https://docs.openluat.com/Luatools/
5、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.2demo使用api介紹
使用常量
常量 | 類型 | 解釋 |
---|---|---|
miniz.WRITE_ZLIB_HEADER | int | 壓縮參數(shù),是否寫入zlib頭部數(shù)據(jù),compress函數(shù)的默認(rèn)值 |
miniz.COMPUTE_ADLER32 | int | 壓縮/解壓參數(shù),是否計算/校驗adler-32 |
miniz.GREEDY_PARSING_FLAG | int | 壓縮參數(shù),是否快速greedy處理,默認(rèn)使用較慢的處理模式 |
miniz.NONDETERMINISTIC_PARSING_FLAG | int | 壓縮參數(shù),是否快速初始化壓縮器 |
miniz.RLE_MATCHES | int | 壓縮參數(shù),僅掃描RLE |
miniz.FILTER_MATCHES | int | 壓縮參數(shù),過濾少于5次的字符 |
miniz.FORCE_ALL_STATIC_BLOCKS | int | 壓縮參數(shù),是否禁用優(yōu)化過的Huffman表 |
miniz.FORCE_ALL_RAW_BLOCKS | int | 壓縮參數(shù),是否只要raw塊 |
miniz.PARSE_ZLIB_HEADER | int | 解壓參數(shù),是否處理zlib頭部,uncompress函數(shù)的默認(rèn)值 |
miniz.HAS_MORE_INPUT | int | 解壓參數(shù),是否還有更多數(shù)據(jù),僅流式解壓可用,暫不支持 |
miniz.USING_NON_WRAPPING_OUTPUT_BUF | int | 解壓參數(shù),解壓區(qū)間是否夠全部數(shù)據(jù),僅流式解壓可用,暫不支持 |
miniz.compress(data,flags)
作用:快速壓縮,需要165KB的系統(tǒng)內(nèi)存和32KB的LuaVM內(nèi)存
參數(shù)
參數(shù) | 傳入值類型 | 解釋 |
---|---|---|
data | string | 待壓縮的數(shù)據(jù),少于400字節(jié)的數(shù)據(jù)不建議壓縮,且壓縮后的數(shù)據(jù)不能大于32KB |
flags | flags | 壓縮參數(shù),默認(rèn)是miniz.WRITE_ZLIB_HEADER,即寫入zlib頭部 |
返回值
返回值類型 | 解釋 |
---|---|
string | 若壓縮成功,返回數(shù)據(jù)字符串,否則返回nil |
string.fromBase64(str)
作用:將字符串進(jìn)行base64解碼
參數(shù)
參數(shù) | 傳入值類型 | 解釋 |
---|---|---|
str | string | 需要轉(zhuǎn)換的字符串 |
返回值
返回值類型 | 解釋 |
---|---|
string | 解碼后的字符串,若解碼失敗則返回空字符串 |
miniz.uncompress(data,flags)
作用:快速解壓,需要32KB的LuaVM內(nèi)存
參數(shù)
參數(shù) | 傳入值類型 | 解釋 |
---|---|---|
data | string | 待解壓的數(shù)據(jù),解壓后的數(shù)據(jù)不能大于32KB |
flags | flags | 解壓參數(shù),默認(rèn)是miniz.PARSE_ZLIB_HEADER,即解析zlib頭部 |
返回值
返回值類型 | 解釋 |
---|---|
string | 若解壓成功,返回數(shù)據(jù)字符串,否則返回nil |
6、代碼示例介紹
6.1 解壓數(shù)據(jù)
先將壓縮過的字符串進(jìn)行base64解碼,然后再解壓:
壓縮數(shù)據(jù)然后解壓:
7、功能驗證
成功解壓:
8、總結(jié)
本例程介紹了如何壓縮和解壓數(shù)據(jù)。
9、常見問題
9.1 解壓數(shù)據(jù)不能超過多少?
解壓后的數(shù)據(jù)不能大于32k。
分享完畢
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3683瀏覽量
131413 -
軟件
+關(guān)注
關(guān)注
69文章
5154瀏覽量
89232 -
壓縮
+關(guān)注
關(guān)注
2文章
102瀏覽量
19718
發(fā)布評論請先 登錄
【合宙Air780E開發(fā)板趣味應(yīng)用】Air780E開發(fā)板方言打麻將
Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機如何分析

合宙 Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

從箱子里找出來的示例:Air780E軟件指南之TCP應(yīng)用

奇妙的Air780E之UDP應(yīng)用示例大賞!

Air780E模組的ADC之旅 LuatOS開發(fā)實例

4G模組Air780E的LuatOS開發(fā)之位運算(bit)示例

評論