如何解决从C ++将字节数组传递给lua脚本方法
| 如何从C ++代码将字节数组作为参数传递给lua脚本方法? 仅允许使用int,float或string数据类型吗? 另外我如何从lua脚本方法中检索字节数组? 我将原始字节数组传递给脚本。它将解析并使用它。 谢谢解决方法
取决于您要做什么。 Lua字符串是不可变的字节数组,因此,如果它们很小,则最好将字节数组转换为带有
lua_pushlstring
的字符串,然后像这样传递它---是的,嵌入式\\ 0是受支持的并且可以工作精细。但是因为它们是不可变的,所以每次您要修改它时,Lua最终都会复制该字符串,因此它可能不适合您的要求。
其他选项是:
在C ++字节数组和Lua数组(即数字表)之间来回复制数据。这在内存中将是相当昂贵的,但可能是最简单的方法。
将C ++字节数组包装在lightuserdata中,并提供Lua绑定以使您可以直接访问它。这是最有效的,但是代码很多。
, Int和float值将转换为Lua的数字类型(默认为double
)。
如果脚本本身仅需要保持指针在函数之间传递,则通常将C数据的blob作为轻用户数据推送:
lua_pushlightuserdata(L,bufptr);
将字节数组传递给Lua时,通常使用字符串(可以使用lua_pushlstring
创建任意数据的字符串):
lua_pushlstring (L,bufptr,buflen);
这将在Lua中创建一个不变的字符串,只能通过创建新字符串来对其进行修改。
如果您需要在Lua中使用可变字节缓冲区(不建议-低级字节操作是C的设计目标,而Lua则不是),最好的选择是使用获取和设置方法为缓冲区创建一个用户数据类型根据用例量身定制(各个位置为数字,范围为字符串或数字表)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。