util.string.pack
Shared
Packs values into a binary string according to a format
Syntax
local binary = util.string.pack(
format,
...
)Parameters
| Type | Name | Description |
|---|---|---|
string | format | Format string containing specifiers describing how to pack the values Refer Specifiers section |
any | ... | Values to pack |
Returns
| Type | Name | Description |
|---|---|---|
string | binary | Binary string containing the packed values |
Specifiers
| Specifier | Description |
|---|---|
b | Signed byte (char) |
B | Unsigned byte (unsigned char) |
h | Signed short |
H | Unsigned short |
l | Signed long |
L | Unsigned long |
j | lua_Integer |
J | lua_Unsigned |
T | size_t |
i[n] | Signed int with n bytes |
I[n] | Unsigned int with n bytes |
f | Float |
d | Double |
n | Lua number |
c[n] | Fixed-size string of n bytes |
z | Zero-terminated string |
s[n] | String preceded by length |
x | One byte of padding |
< | Set little endian |
> | Set big endian |
= | Set native endian |
Examples
local packed = util.string.pack("iii", 10, 20, 30)
core.engine.print("info", #packed) -- 12local packed = util.string.pack("c5", "hello")
core.engine.print("info", #packed) -- 5local packed = util.string.pack("z", "world")
core.engine.print("info", #packed) -- 6local packed = util.string.pack("ifd", 42, 3.14, 2.718)local packed = util.string.pack("<I4", 0x12345678)local packed = util.string.pack(">I4", 0x12345678)local packed = util.string.pack("BBB", 65, 66, 67)
core.engine.print("info", packed) -- 'ABC'local packed = util.string.pack("ixxi", 1, 2)local packed = util.string.pack("H", 1000)local packed = util.string.pack("d", util.math.pi)local packed = util.string.pack("s1", "hello")local packed = util.string.pack("zz", "first", "second")local packed = util.string.pack("i4f", 100, 1.5)local packed = util.string.pack(">I2", 0xABCD)local packed = util.string.pack("c10i4f", "PlayerName", 100, 99.5)local packed = util.string.pack("b", (true and 1) or 0)