今天我?guī)氲氖?a href="http://m.hljzzgx.com/tags/ai/" target="_blank">Air780E 軟件中 zlib 解壓示例,希望大家有所收獲。
1、ZLIB解壓工具簡介
Zlib解壓工具是一個廣泛使用的壓縮和解壓縮庫,主要用于處理數據的壓縮和解壓縮任務。Zlib使用的是DEFLATE算法,這是一種通用的壓縮算法。它被應用在很多場景中,比如壓縮文件、網絡傳輸中的數據壓縮、以及各種應用程序中的數據存儲和讀取。
Zlib的代碼庫相對小巧,因此在嵌入式系統(tǒng)和資源受限的環(huán)境中也能很好地使用。
詳細細節(jié)可以參考:https://www.cnblogs.com/LyShark/p/17861293.html
2、演示功能概述
本文主要演示如何對數據壓縮解壓。
3、準備硬件環(huán)境
此核心板的詳細使用說明參考:
https://docs.openluat.com/air780e/product/
Air780E產品手冊中的<<開發(fā)板Core_Air780E使用說明V1.0.5.pdf>>;核心板使用過程中遇到任何問題,可以直接參考這份使用說明pdf文檔。
3.1 數據通信線
3.2 PC電腦
WINDOWS系統(tǒng)。
4、準備軟件環(huán)境
4.1 基本的下載調試工具
使用說明參考:
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 | 壓縮參數,是否寫入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 | 壓縮參數,是否禁用優(yōu)化過的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 | 解壓參數,解壓區(qū)間是否夠全部數據,僅流式解壓可用,暫不支持 |
miniz.compress(data,flags)
作用:快速壓縮,需要165KB的系統(tǒng)內存和32KB的LuaVM內存
參數
參數 | 傳入值類型 | 解釋 |
---|---|---|
data | string | 待壓縮的數據,少于400字節(jié)的數據不建議壓縮,且壓縮后的數據不能大于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、代碼示例介紹
6.1 解壓數據
先將壓縮過的字符串進行base64解碼,然后再解壓:
壓縮數據然后解壓:
7、功能驗證
成功解壓:
8、總結
本例程介紹了如何壓縮和解壓數據。
9、常見問題
9.1 解壓數據不能超過多少?
解壓后的數據不能大于32k。
分享完畢
-
嵌入式系統(tǒng)
+關注
關注
41文章
3587瀏覽量
129433 -
軟件
+關注
關注
69文章
4921瀏覽量
87392 -
壓縮
+關注
關注
2文章
102瀏覽量
19373
發(fā)布評論請先 登錄
相關推薦
評論