现在C++从socket中读取到char* 二进制流, 中间因为对齐会存在\0截断,现在问题就是无论lua_pushlstring还是lua_pushstring在lua层读取到的都是到第一个\0就结束了…pushlstring也是如此。
我希望可以从C传递给lua然后做序列化和反序列化… 不是protobuf,是传统的二进制流
感谢各位帮忙看下
可以转成 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实现,这样就实现了协议的热更新
感谢您的思路~
不客气