Hello! 2015-08-08 16:58 GMT+08:00 bailu: > 需要在lua里通过socket发送并获取一些数据,传输的数据是二进制包形式,在openresty里找了很久没找到有封装的打包解包方法,然后搜索到https://github.com/LuaDist/lpack > 这个,想问下openresty有现成的pack方法吗? > lpack 看起来效率有限。推荐的做法是使用 LuaJIT 原生的 bit API 来操纵二进制数据,见 http://bitop.luajit.org/ 比如我的 lua-resty-mysql 就是这么做的,见 https://github.com/openresty/lua-resty-mysql 当然了,你也可以在此基础之上自己实现类似 lpack 支持的 format string 描述记法,然后自动生成等价的使用 bit API 的 Lua 代码,然后动态加载之,反复执行之。这种方式的效率也会高于 lpack(毕竟有机会为 LuaJIT 所 JIT 编译)。 仅供参考。 Regards, -agentzh