add unpack function documentation

This commit is contained in:
MihailRis 2024-12-27 09:58:02 +03:00
parent ee26b2a2b9
commit 72394181c7
3 changed files with 15 additions and 13 deletions

View File

@ -39,6 +39,12 @@ Value characters describe the type and size.
> [!WARNING] > [!WARNING]
> Due to the absence of an integer type in Lua for values `l` and `L`, only an output size of 8 bytes is guaranteed; the value may differ from what is expected. > Due to the absence of an integer type in Lua for values `l` and `L`, only an output size of 8 bytes is guaranteed; the value may differ from what is expected.
```lua
byteutil.unpack(format: str, bytes: table|Bytearray) -> ...
```
Extracts values from a byte array based on a format string.
Example: Example:
```lua ```lua
@ -58,14 +64,7 @@ debug.print(byteutil.tpack('>iBH?', -8, 250, 2019, true))
-- ) -- )
local bytes = byteutil.pack('>iBH?', -8, 250, 2019, true) local bytes = byteutil.pack('>iBH?', -8, 250, 2019, true)
debug.print(byteutil.unpack('>iBH?', bytes)) print(byteutil.unpack('>iBH?', bytes))
-- outputs: -- outputs:
-- debug.print( -- -8 250 2019 true
-- {
-- -8,
-- 250,
-- 2019,
-- true
-- }
--)
``` ```

View File

@ -40,6 +40,12 @@ byteutil.tpack(format: str, ...) -> table
> Из-за отсутствия в Lua целочисленного типа для значений `l` и `L` гарантируется > Из-за отсутствия в Lua целочисленного типа для значений `l` и `L` гарантируется
> только выходной размер в 8 байт, значение может отличаться от ожидаемого. > только выходной размер в 8 байт, значение может отличаться от ожидаемого.
```lua
byteutil.unpack(format: str, bytes: table|Bytearray) -> ...
```
Извлекает значения из массива байт, ориентируясь на строку формата.
Пример: Пример:
```lua ```lua

View File

@ -134,8 +134,6 @@ static int l_unpack(lua::State* L) {
ByteReader reader(bytes); ByteReader reader(bytes);
bool bigEndian = false; bool bigEndian = false;
int index = 1;
lua::createtable(L, count, 0);
for (size_t i = 0; format[i]; i++) { for (size_t i = 0; format[i]; i++) {
switch (format[i]) { switch (format[i]) {
case 'b': case 'b':
@ -185,9 +183,8 @@ static int l_unpack(lua::State* L) {
default: default:
continue; continue;
} }
lua::rawseti(L, index++);
} }
return 1; return count;
} }
static int l_pack(lua::State* L) { static int l_pack(lua::State* L) {