日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lua 通过 alien 库调用 zlib 压缩/解压

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua 通过 alien 库调用 zlib 压缩/解压 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/kowity/article/details/7256376

上次的文章(http://blog.csdn.net/kowity/article/details/7229815)講述了上個在 Lua 中調用 zlib 壓縮、解壓功能的庫。其實通過使用 Lua 的 alien 庫就可以直接調用外部 dll 中的函數,并不需要專門為 Lua 寫一個插件。


調用 zlib 壓縮、解壓的代碼如下(參考了 LuaJIT 的部分實現方式(http://luajit.org/ext_ffi_tutorial.html)):

[python]?view plaincopy
  • require("alien")??
  • ??
  • local?zlib?=?alien.load("zlib1")??
  • zlib.compressBound:types('long',?'long')??
  • zlib.compress2:types('int',?'pointer',?'pointer',?'string',?'long',?'int')??
  • zlib.uncompress:types('int',?'pointer',?'pointer',?'string',?'long')??
  • ??
  • local?function?compress(txt)??
  • ??local?n?=?zlib.compressBound(#txt)??
  • ??local?buf?=?alien.buffer(n)??
  • ??local?buflen?=?alien.buffer('0000')??
  • ??local?res?=?zlib.compress2(buf,?buflen,?txt,?#txt,?9)??
  • ??assert(res?==?0)??
  • ??--?返回壓縮結果和壓縮后的長度??
  • ??return?buf,?alien.toulong(buflen:topointer())??
  • end??
  • ??
  • local?function?uncompress(comp,?comp_len,?n)??
  • ??local?buf?=?alien.buffer(n)??
  • ??local?buflen?=?alien.buffer('0000')??
  • ??local?res?=?zlib.uncompress(buf,?buflen,?comp,?comp_len)??
  • ??assert(res?==?0)??
  • ??--?返回解壓后在緩沖區中有效的部分??
  • ??return?tostr(buf,?alien.toulong(buflen:topointer()))??
  • ????
  • end??
  • ??
  • --?有符號數轉無符號數??
  • function?toUnsigned(num)??
  • ????local?n??
  • ????if?num?<?0?then??
  • ????????n?=?256?+?num??
  • ????else??
  • ????????n?=?num??
  • ????end??
  • ??????
  • ????return?n??
  • end??
  • ??
  • function?tostr(buf,?len)??
  • ????local?str??
  • ????for?i?=?1,?len?do???
  • ????????--?Lua?把?buf?里面的數當成有符號數了,??
  • ????????--?導致讀出來的有負數??
  • ????????local?val?=?toUnsigned(buf[i])??
  • ????????if?i?==?1?then??
  • ????????????str?=?string.char(val)??
  • ????????else??
  • ????????????str?=?str?..?string.char(val)??
  • ????????end??
  • ????end??
  • ??????
  • ????return?str??
  • end??
  • ??
  • local?txt?=?string.rep("ab\0cd",?100)??
  • print("Uncompressed?size:?",?#txt)??
  • local?c,?c_len?=?compress(txt)??
  • print("Compressed?size:?",?c_len)??
  • local?txt2?=?uncompress(c,?c_len,?#txt)??
  • assert(txt2?==?txt)??

  • 總結

    以上是生活随笔為你收集整理的Lua 通过 alien 库调用 zlib 压缩/解压的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产片淫乱18一级毛片动态图 | 精品国产一级片 | 国产精品一区二区人人爽 | 亚洲图片在线 | 无码国产精品一区二区免费16 | 爆操巨乳 | 在线观看色网 | 亚洲视频91 | 国产丝袜第一页 | av片免费播放| 久久久久久久久成人 | 少妇一级淫片免费放播放 | 97超碰色 | 中国av免费 | 老女人性生活视频 | 亚洲一二三四在线观看 | 亚洲欧洲综合网 | wwwwxxxx欧美 | 无套内谢大学处破女www小说 | 亚洲一区人妻 | 香蕉福利 | 三级国产三级在线 | 久久综合精品国产二区无码不卡 | 69天堂| 三级视频网站在线观看 | 影音先锋久久 | 岛国av电影在线观看 | 国产a一级片 | 少妇的被肉日常np | 夜夜躁狠狠躁日日躁 | 国产99视频在线观看 | 国产欧美一区二区三区在线看蜜臂 | 国产福利精品在线观看 | 欧美人妖xxxx | 91精品国产综合久久精品 | 欧美中文字幕 | 一区二区日韩精品 | 在线看亚洲 | av一区不卡 | 久久久亚洲综合 | 亚洲性视频网站 | 久久伊人操 | 亚洲一区二区视频网站 | 大桥未久av一区二区三区中文 | 老熟妇高潮一区二区高清视频 | 久久久www | 一本色道久久综合狠狠躁 | 18禁男女爽爽爽午夜网站免费 | 日本国产在线观看 | 免费污网站在线观看 | 国产一级一级国产 | 午夜精品久久久久 | 欧美做爰全过程免费观看 | 天天天天 | 伊人色网站 | 天天色天天爱 | 精品少妇一区二区三区免费观 | 中文在线观看免费网站 | 一区二区三区在线看 | 窝窝视频在线 | 国产一区二区免费在线观看 | 肉色丝袜脚交一区二区 | 日韩色视频在线观看 | 一级做a爱片久久 | 国产成人精品av久久 | 无码人妻一区二区三区精品视频 | 啪啪一区二区 | 日韩视频在线观看免费视频 | 性免费网站 | 无码视频一区二区三区 | 国产一区二区综合 | 中文有码一区 | 人人射人人射 | 日韩有码中文字幕在线观看 | 国产精品一区在线免费观看 | 国产精品图片 | 欧美专区综合 | 成人网站在线进入爽爽爽 | 黄视频国产 | 99九九久久| 自拍露脸高潮 | 女女h百合无遮羞羞漫画软件 | 中文字幕乱妇无码av在线 | 在线播放不卡av | 五月天av网站 | 精品久久成人 | www天天操 | 久色91 | 欧美一级片a | 欧美日韩一区二区在线观看视频 | 久草在| 成人靠逼视频 | 欧美日本道 | 超碰人人99 | 懂色一区二区二区av免费观看 | 广州毛片 | 五月天视频网 | 操的网站 | 女同二区|