将C#字节数组传递给LuaInterface

时间:2010-09-15 21:41:02

标签: c# lua luainterface

我的C#代码中有一个字节数组,需要传递给LuaInterface实例。我可以在Lua中使用pack(),将生成的字符串传递给C#并将其转换为System.Text.Encoding.UTF8.GetBytes(),但是以其他方式转换似乎不起作用。

有简单的解决方案吗?我希望我能避免将字节数组分配给全局值。

修改
今天早上我尝试了一些新东西。我尝试使用LuaInterface.GetFunction(),一切正常,直到它在LuaDLL.cpp中遇到lua_pushstring()。此时,C#字符串通过Marshal::StringToHGlobalAnsi().ToPointer()转换为char *。看起来这个函数需要一个以空字符结尾的字符串,而我的字符串的第一个字节是0,所以我在我的lua代码中得到一个空字符串。

2 个答案:

答案 0 :(得分:3)

最后将其追溯到lapi.c中对::lua_pushstring()的调用。它在传入的char *上调用strlen()。由于我的第一个数据字节为0,它返回0.有一个替代调用lua_pushlstring,它接受​​字符串的大小作为参数。更改为调用此函数可以解决问题。

答案 1 :(得分:0)

尝试使用System.Text.ASCIIEncoding.ASCII.GetString对字节数组进行编码,以获取可传递给Lua的字符串。