String
string.pack
Shared
Packs values into a binary string according to a format
Syntax
local binary = string.pack(format, ...)Parameters
| Type | Name | Description |
|---|---|---|
string | format | Format string containing specifiers describing how to pack the values Refer Specifiers section |
... | ... | 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 = string.pack("iii", 10, 20, 30)
engine.print("info", #packed) --12local packed = string.pack("c5", "hello")
engine.print("info", #packed) --5local packed = string.pack("z", "world")
engine.print("info", #packed) --6local packed = string.pack("ifd", 42, 3.14, 2.718)local packed = string.pack("<I4", 0x12345678)local packed = string.pack(">I4", 0x12345678)local packed = string.pack("BBB", 65, 66, 67)
engine.print("info", packed) --'ABC'local packed = string.pack("ixxi", 1, 2)local packed = string.pack("H", 1000)local packed = string.pack("d", math.pi)local packed = string.pack("s1", "hello")local packed = string.pack("zz", "first", "second")local packed = string.pack("i4f", 100, 1.5)local packed = string.pack(">I2", 0xABCD)local packed = string.pack("c10i4f", "PlayerName", 100, 99.5)local packed = string.pack("b", (true and 1) or 0)