Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#字节数组传递给LuaInterface_C#_Lua_Luainterface - Fatal编程技术网

将C#字节数组传递给LuaInterface

将C#字节数组传递给LuaInterface,c#,lua,luainterface,C#,Lua,Luainterface,我的C#代码中有一个字节数组,需要将其传递到LuaInterface实例中。我可以在Lua中使用pack(),将生成的字符串传递给C#,并使用System.Text.Encoding.UTF8.GetBytes()对其进行转换,但使用另一种方法似乎不起作用 有简单的解决办法吗?我希望可以避免将字节数组赋给全局值 编辑: 今天早上我尝试了一些新东西。我试着使用LuaInterface.GetFunction(),一切都正常,直到它在LuaDLL.cpp中点击lua\u pushstring()。此

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

有简单的解决办法吗?我希望可以避免将字节数组赋给全局值

编辑

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

尝试用编码字节数组以获得一个可以传递给lua的字符串。

最后将其追溯到一个字符串,调用lapi.c中的
::lua\u pushstring()
。它对传入的char*调用了
strlen()。因为我的第一个数据字节是0,所以它返回0。还有另一个调用,
lua_pushlstring
,它接受字符串的大小作为参数。更改为调用此函数修复了此问题。

我最初尝试了此方法,但UTF8编码除外。问题是在此时将数据传递到Lua。我必须通过lua.DoString(“parse(data)”)调用lua函数;字符串格式不喜欢空字符。