2017-02-15 139 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