从C语言向Lua传递字节数组

我试图从C语言向Lua传递字节数组。 如果我将它作为字符串传递,我不能传递包含“0x00”的数组(因为它被解释为字符串的结尾)。目前我的代码如下:

C语言代码:

uchar hash[32];
memset(hash, 0, 32);

sha256_final(ctx, hash);
lua_pushstring(L, (const char*)hash);
return 1;

Lua代码:

local hash_str = shaFunctions.final(ctx)
local hash = {}
hash_str:gsub(".",function(c) table.insert(hash,string.byte(c)) end)

有没有更好的方法从C语言向Lua传递字节数组? 谢谢

点赞
用户7066323
用户7066323

你可以使用 lua_pushlstring() 函数。

这是函数的样本代码:

void lua_pushlstring (lua_State *L, const char *s, size_t len);

你需要将代码修改为这样:

uchar hash[32];
memset(hash, 0, 32);

sha256_final(ctx, hash);
lua_pushlstring(L, (const char*)hash, 32);
return 1;
2017-02-15 13:13:18