将字节数组从C+传递给lua脚本方法+; 如何将字节数组作为参数从C++代码传递给Lua脚本方法? 是否只允许使用int、float或string数据类型? 另外,如何从lua脚本方法检索字节数组? 我将向脚本传递一个原始字节数组。它将解析并使用它。 Thanx.

将字节数组从C+传递给lua脚本方法+; 如何将字节数组作为参数从C++代码传递给Lua脚本方法? 是否只允许使用int、float或string数据类型? 另外,如何从lua脚本方法检索字节数组? 我将向脚本传递一个原始字节数组。它将解析并使用它。 Thanx.,c++,lua,arguments,bytearray,parameter-passing,C++,Lua,Arguments,Bytearray,Parameter Passing,Int和float值将转换为Lua的数字类型(默认情况下,double) 如果脚本本身只需要保留一个指针以在函数之间传递,则C数据块通常作为轻用户数据推送: lua_pushlightuserdata(L, bufptr); 向Lua传递字节数组时,通常使用字符串(可以使用Lua\u pushlstring创建任意数据字符串): 这将在Lua中创建一个不可变字符串,只能通过创建新字符串来修改该字符串 如果您需要在Lua中使用可变字节缓冲区(不推荐使用-低级别字节操作是C设计的,而Lua不是),

Int和float值将转换为Lua的数字类型(默认情况下,
double

如果脚本本身只需要保留一个指针以在函数之间传递,则C数据块通常作为轻用户数据推送:

lua_pushlightuserdata(L, bufptr);
向Lua传递字节数组时,通常使用字符串(可以使用
Lua\u pushlstring
创建任意数据字符串):

这将在Lua中创建一个不可变字符串,只能通过创建新字符串来修改该字符串


如果您需要在Lua中使用可变字节缓冲区(不推荐使用-低级别字节操作是C设计的,而Lua不是),最好的办法是为缓冲区创建一个userdata类型,方法是根据用例定制获取和设置(单个位置为数字,范围为字符串或数字表).

取决于你想做什么。Lua字符串是不可变的字节数组,因此,如果它们很小,您可能最好使用
Lua\u pushlstring
将字节数组转换为字符串,然后像这样传递它---是的,支持嵌入式\0,并且工作正常。但是因为它们是不可变的,所以每次您想要修改它时,Lua都会复制字符串,所以它可能不适合您的要求

其他选择包括:

    在C++字节数组和LUA数组(即,数字表)之间来回复制数据。这在内存中相当昂贵,但可能是最简单的方法

    < P>在LoTuxError数据中包装你的C++字节数组,并提供LUA绑定,让你直接访问它。这是最有效的,但需要大量的代码

lua_pushlstring (L, bufptr, buflen);