lua拡張ライブラリlpackの使用ガイドラインについて
6336 ワード
luaopen_pack(lua_state);
を呼び出し、lpackをdll(so)にコンパイルし、luaで:require("lpack")
--luapack
local _ss = luapack(">P", " asd")
local _ss2 = luapack(">h", 500)
_ss = _ss.._ss2
print(_ss, #_ss)
--
asd 9
asd 11
、パケット解除インタフェースunpackの使用--luaunpack
-- 1
local ne, value = luaunpack(_ss, ">P")
print(ne, value)
_ss = string.sub(_ss, ne, #_ss)
local ne, value = luaunpack(_ss, ">h")
print(ne, value)
--
10 asd
3 500
-- 2
local ne, value1, value2 = luaunpack(_ss, ">Ph")
print(ne, value, value2)
--
12 asd 500
#define OP_ZSTRING 'z' //
#define OP_BSTRING 'p' // 2^8
#define OP_WSTRING 'P' // 2^16
#define OP_SSTRING 'a' // 2^32/64 */
#define OP_STRING 'A' //
#define OP_FLOAT 'f' /* float */
#define OP_DOUBLE 'd' /* double */
#define OP_NUMBER 'n' /* Lua number */
#define OP_CHAR 'c' /* char */
#define OP_BYTE 'b' /* byte = unsigned char */
#define OP_SHORT 'h' /* short */
#define OP_USHORT 'H' /* unsigned short */
#define OP_INT 'i' /* int */
#define OP_UINT 'I' /* unsigned int */
#define OP_LONG 'l' /* long */
#define OP_ULONG 'L' /* unsigned long */
#define OP_LITTLEENDIAN ' /* little endian */
#define OP_BIGENDIAN '>' /* big endian */
#define OP_NATIVE '=' /* native endian */