Lua如何给C++传递一个二进制buffer

Lua如何给C++传递一个二进制buffer?
需求是:我的网络通讯是用C++的,所以当我需要在lua中调用发送的时候,也就需要Lua给C++传递一个二进制buffer。
目前我用string做参数有个问题:
比如:
我lua用使用的buffer是:0x61 00 62 63 64
在C++函数中收到的却是:0x61 00 00 00 00

附:
C++中对应的函数是:
void MQTTClient::pulishString(std::string payload, long payloadLen);

Lua中调用:
client:publishString(string.char(97, 0, 98, 99, 100), 5);

感觉Lua相关资源比较少。特别现在google给屏蔽的时候

已解决:
Lua给C++传buffer时,使用string就行,再C++的,tolua++中使用下面代码读取buffer
size_t ld;
const char *data = luaL_checklstring(tolua_S, 2, &ld); // 2是参数的位置, ld是buffer的长度
C++给Lua传buffer时,在C++代码中使用下面代码传入buffer
LuaStack *stack = LuaEngine::getInstance()->getLuaStack();
stack->pushString(buffer, bufferLen);

官方应该直接实现这个功能的
我以前跟他们反映过,但不知道为什么没人修复这个问题
还要自己改tolua++的代码才能实现

就是,为什么官方不支持二进制传递一下,每次生成都要手动改一下,我想把tolua++转换函数改一下,但是又怕改了后别的地方如果用到不需要二进制数据的出问题

我把LuaBasicConversions文件的luaval_to_std_string()改成支持二进制了,不知这里改会否出问题?

请问用pushString以后,如何在lua中获取这个传入的buffer呢,能贴一段完整点的代码吗,我小白,正在学习lua