2017-02-15 135 views
3

我想从C传递一个字节数组到lua。 如果我将它作为字符串传递,我无法传递包含“0x00”的数组(因为它被解释为字符串的结尾)。这就是我写到目前为止:从C传递字节数组到Lua

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的更好的办法? 谢谢

+0

使用'lua_pushlstring' –

回答

3

您可以使用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; 
+0

它的工作原理!谢谢 – Ofa