String
string.unpack
Shared
Unpacks values from a binary string according to a format
Syntax
local ..., next_pos = string.unpack(format, input, start_at = 1)Parameters
| Type | Name | Description |
|---|---|---|
string | format | Format string - same format as used in string.pack |
string | input | Binary string containing packed data |
int | start_at | Starting position in the string |
Returns
| Type | Name | Description |
|---|---|---|
... | ... | Unpacked values |
int | next_pos | Index of the first unread byte in the string |
Examples
local packed = string.pack("iii", 10, 20, 30)
local a, b, c = string.unpack("iii", packed)
engine.print("info", a, b, c) --10 20 30local packed = string.pack("ii", 100, 200)
local val1, pos = string.unpack("i", packed)
local val2 = string.unpack("i", packed, pos)
engine.print("info", val1, val2) --100 200local packed = string.pack("c5", "hello")
local str = string.unpack("c5", packed)
engine.print("info", str) --'hello'local packed = string.pack("z", "world")
local str, nextPos = string.unpack("z", packed)
engine.print("info", str) --'world'
engine.print("info", nextPos) --7local packed = string.pack("ifd", 42, 3.14, 2.718)
local i, f, d = string.unpack("ifd", packed)
engine.print("info", i, f, d) --42 3.14 2.718local packed = string.pack("iii", 1, 2, 3)
local value = string.unpack("i", packed, 5)
engine.print("info", value) --2local packed = string.pack("<I4", 0x12345678)
local value = string.unpack("<I4", packed)
engine.print("info", string.format("0x%X", value)) --'0x12345678'local packed = string.pack(">I4", 0xABCDEF00)
local value = string.unpack(">I4", packed)
engine.print("info", string.format("0x%X", value)) --'0xABCDEF00'local packed = string.pack("BBB", 65, 66, 67)
local b1, b2, b3 = string.unpack("BBB", packed)
engine.print("info", string.char(b1, b2, b3)) --'ABC'local packed = string.pack("d", math.pi)
local value = string.unpack("d", packed)
engine.print("info", value) --3.14159...local packed = string.pack("c10i4f", "PlayerName", 100, 99.5)
local name, health, score = string.unpack("c10i4f", packed)
engine.print("info", name, health, score)local packed = string.pack("s1", "hello")
local str = string.unpack("s1", packed)
engine.print("info", str) --'hello'local packed = string.pack("zz", "first", "second")
local str1, pos = string.unpack("z", packed)
local str2 = string.unpack("z", packed, pos)
engine.print("info", str1, str2) --'first' 'second'local header = string.pack(">I2I2I4", 1, 2, 1024)
local version, type, length = string.unpack(">I2I2I4", header)
engine.print("info", "Version:", version)
engine.print("info", "Type:", type)
engine.print("info", "Length:", length)local packed = string.pack("b", 1)
local value = string.unpack("b", packed)
local bool = value ~= 0
engine.print("info", bool) --truelocal packed = string.pack("i4i4i4i4", 1, 2, 3, 4)
local a, b, pos = string.unpack("i4i4", packed)
local c, d = string.unpack("i4i4", packed, pos)
engine.print("info", a, b) --1 2
engine.print("info", c, d) --3 4