lua 二进制打包库lpack

本文介绍了如何在Lua项目中解决将Java的JCE序列化转换为Lua表示的问题。通过引用lua的lpack库,类似于Python的struct模块,可以实现二进制数据的打包和解包。lpack库提供了pack和unpack接口,根据USE_GLOBALS宏可以选择全局调用或集成到string模块。文章展示了如何定义变量类型和控制字节序进行打包操作。
摘要由CSDN通过智能技术生成

jce序列化到lua的项目遇到一个难点,jce是类c++的,支持void,bool,byte,short,int,long,float,double,string等类型,而lua是动态类型语言,基本类型也只有number,string,function,table,usrdata....,怎么让jce中的类型正确的用Lua表示。

  • 参考python的实现,python用的是struct库中的struct.pack()和struct.unpack()以及struct.unpack_from()方法。于是github找发现lua也有类似的库----lpack 下载链接:https://github.com/LuaDist/lpack,使用方法同bit库,用动态链接的方法。
  • 具体调用方法,提供了两个接口: pack和unpack,但是有两种调用方法,使用宏(USE_GLOBALS)来控制,第一种是使用全局接口(pack/unpack),另外一种是将这两个接口插入到string的空间里面(string.pack/string.unpack)pack操作用于将lua变量按自定义类型打包成string类型,unpack用于解包,接口参数入下
  • pack (f, ...)
    Packs values into string 
    Parameters:
    f:string Format string.
    ... Values to pack.
    Returns:
    string Packed string.
    
    unpack (s, f[, init])
    Unpacks values from a string
    Paramet
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值