• 二进制数据操作
    • 使用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

    示例:

    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

    函数参考:

    • string.pack/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 原生支持位操作。参考