从C#函数传递ByteArray到Lua代码

我正在使用基于 C# 的 GUI 与 Lua 引擎进行交互。我已经寻找了帮助,但是我没有得到正确的解决方案,而且我不能在 Lua 方面进行太多更改,因为 LuaInterface.dll 已经给了我,不能改变。

在 C# 中,我有一个如下的函数:

public Int32 Calculate_Func(string input, out Byte[] byte_arr)
{
  byte_arr = Process(input);
  return 1;
}

在 Lua 中,我调用上述函数:

ret, val = Calculate_Func(Packet_String)

但是我发现字节数组没有在我的 Lua 函数中反映出来。当我尝试读取“val”变量的值时,它返回“System.Byte[]”。我无法在 Lua 中访问字节数组值。

但是,如果我将字节数组更改为字符串,则该值将返回,但是我需要在 Lua 中处理字节。我该如何实现这一点?

点赞
用户1424244
用户1424244

尝试这样做:

public Int32 Calculate_Func(string input, out LuaTable byte_arr)
{
    // 对输入进行处理,返回字节数组
    byte[] arr = Process(input);
    // 将字节数组作为 Lua 表返回
    byte_arr = (LuaTable)lua.DoString("return {"+String.Join(",", byte_arr)+"}");
    // 返回 1
    return 1;
}
2015-07-31 19:10:59