将C#字节数组传递给LuaInterface

我有一个字节数组在我的 C# 代码中,我需要传递给 LuaInterface 实例。我可以在 Lua 中使用 pack(),将结果字符串传递给 C# 并使用 System.Text.Encoding.UTF8.GetBytes() 进行转换,但反过来似乎不起作用。

是否有简单的解决方案?我希望能够避免将字节数组赋值给全局变量。

编辑

今早我尝试了一些新的方法。我尝试使用 LuaInterface.GetFunction(),一切都顺利,直到它到达 LuaDLL.cpp 中的 lua_pushstring()。此时,通过 Marshal::StringToHGlobalAnsi().ToPointer() 将 C# 字符串转换为 char*。这个函数似乎期望一个以 null 结尾的字符串,而我的字符串的第一个字节为 0,所以我在我的 lua 代码中得到了一个空字符串。

原文链接 https://stackoverflow.com/questions/3722060

点赞
stackoverflow用户1491
stackoverflow用户1491

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

2010-09-15 22:02:34
stackoverflow用户111821
stackoverflow用户111821

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

2010-09-16 15:02:30