2

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

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

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

4

2 回答 2

3

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

于 2010-09-16T15:02:30.103 回答
0

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

于 2010-09-15T22:02:34.963 回答