二进制数据操作

Lua 构建和解析二进制数据有两种方式:

  • 使用string.char, string.byte
  • 使用string.pack, string.unpack

使用string.char, string.byte

函数参考:

示例:

  1. local toInt16 = function(val)
  2. local val = (val + 0xFFFF) % 0xFFFF
  3. local hv = math.floor((val / 0xFF) % 0xFF)
  4. local lv = math.floor(val % 0xFF)
  5. return string.char(hv)..string.char(lv)
  6. end
  7. local fromInt16= function(data)
  8. local val = _M.uint16(data, index)
  9. val = ((val + 0x8000) % 0xFFFF) - 0x8000
  10. return val
  11. end
  12. --[[
  13. 0xFF = 256
  14. 0xFFFF = 65536
  15. 0x8000 = 32768
  16. ]]--

使用string.pack, string.unpack

函数参考:

示例:

  1. local toInt16 = function(value)
  2. return string.pack(">i2", value)
  3. end
  4. local fromInt16 = function(data)
  5. return string.unpack(">i2", data)
  6. end

位数据操作

Lua 5.3 原生支持位操作。参考