miniz_app.lua 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. --[[
  2. @module miniz_app
  3. @summary miniz_app应用功能模块
  4. @version 1.0
  5. @date 2025.10.28
  6. @author 沈园园
  7. @usage
  8. 本文件为miniz应用功能模块,核心业务逻辑为:
  9. 1、如何对数据压缩解压;
  10. 本文件没有对外接口,直接在main.lua中require "miniz_app"就可以加载运行;
  11. ]]
  12. local function miniz_task_func()
  13. -- 压缩过的字符串, 为了方便演示, 这里用了base64编码
  14. -- miniz能解压标准zlib数据流
  15. -- 将字符串进行base64解码
  16. local b64str = "eAEFQIGNwyAMXOUm+E2+OzjhCCiOjYyhyvbVR7K7IR0l+iau8G82eIW5jXVoPzF5pse/B8FaPXLiWTNxEMsKI+WmIR0l+iayEY2i2V4UbqqPh5bwimyEuY11aD8xeaYHxAquvom6VDFUXqQjG1Fek6efCFfCK0b0LUnQMjiCxhUT05GNL75dFUWCSMcjN3EE5c4Wvq42/36R41fa"
  17. local str = b64str:fromBase64()
  18. -- 快速解压
  19. local dstr = miniz.uncompress(str)
  20. -- 压缩过的数据长度 156
  21. -- 解压后的数据长度,即原始数据的长度 235
  22. log.info("miniz", "压缩过的数据长度: ", #str, "解压后的数据长度:", #dstr)
  23. -- 演示压缩解压
  24. local ostr = "abcd1234567890efghijklmnopqrstuvwxyzabcd1234567890efghijklmnopqrstuvwxyzabcd1234567890efghijklmnopqrstuvwxyz"
  25. log.info("压缩前的字符串:", #ostr, ostr)
  26. -- 压缩字符串
  27. local zstr = miniz.compress(ostr)
  28. log.info("压缩后的字符串:",#zstr, zstr:toHex())
  29. -- 解压字符串
  30. local lstr = miniz.uncompress(zstr)
  31. log.info("解压后的字符串:", #lstr, lstr)
  32. -- 演示从文件读取2K数据压缩
  33. local ostr = io.readFile("/luadb/test.txt")
  34. local zstr = miniz.compress(ostr)
  35. if zstr then
  36. log.info("miniz", "压缩前的数据长度: ", #ostr, "压缩后的数据长度: ", #zstr)
  37. end
  38. end
  39. --创建一个task,并且运行task的主函数miniz_task_func
  40. sys.taskInit(miniz_task_func)