c++如何传递一段二进制buffer给lua

现在C++从socket中读取到char* 二进制流, 中间因为对齐会存在\0截断,现在问题就是无论lua_pushlstring还是lua_pushstring在lua层读取到的都是到第一个\0就结束了…pushlstring也是如此。
我希望可以从C传递给lua然后做序列化和反序列化… 不是protobuf,是传统的二进制流
感谢各位帮忙看下

很简单,思路是c++写个二进制序列化类,导出lua, 具体可以参考这里 https://github.com/halx99/yasio

可以转成 base64string 传递给 lua

c++

    LUA_FUNCTION handler = (  toluafix_ref_function(tolua_S, 1, 0));
    log("handler=%d", handler);
    auto stack = LuaEngine::getInstance()->getLuaStack();
    std::string data = std::string("123") + '\0' + std::string("456");
    log("size=%d", data.length());
    stack->pushString(data.data(), data.length());
    stack->executeFunctionByHandler(handler, 1);

lua test

print(data, string.len(data))

               for i=1,string.len(data) do
                   print(data:sub(i,i))
               end

我最后用lua_pushlstring 可以传递二进制,需要一个二进制的长度,然后lua就可以获取到这个二进制,再进行解析,这样就可以实现socket在C++实现,序列化在lua实现,这样就实现了协议的热更新

感谢您的思路~

不客气