- 二进制数据操作
- 使用string.char, string.byte
- 使用string.pack, string.unpack
- 位数据操作
二进制数据操作
Lua 构建和解析二进制数据有两种方式:
- 使用string.char, string.byte
- 使用string.pack, string.unpack
使用string.char, string.byte
函数参考:
- string.byte
- string.char
示例:
local toInt16 = function(val)local val = (val + 0xFFFF) % 0xFFFFlocal hv = math.floor((val / 0xFF) % 0xFF)local lv = math.floor(val % 0xFF)return string.char(hv)..string.char(lv)endlocal fromInt16= function(data)local val = _M.uint16(data, index)val = ((val + 0x8000) % 0xFFFF) - 0x8000return valend--[[0xFF = 2560xFFFF = 655360x8000 = 32768]]--
使用string.pack, string.unpack
函数参考:
- string.pack/unpack
示例:
local toInt16 = function(value)return string.pack(">i2", value)endlocal fromInt16 = function(data)return string.unpack(">i2", data)end
位数据操作
Lua 5.3 原生支持位操作。参考
