An open API service indexing awesome lists of open source software.

https://github.com/kong/lua-pack

A library for packing and unpacking binary data.
https://github.com/kong/lua-pack

Last synced: 5 months ago
JSON representation

A library for packing and unpacking binary data.

Awesome Lists containing this project

README

          

This library is extended from `lpack` library on Luarocks to support Hexdecimal data too.

This is a simple Lua library for packing and unpacking binary data.
The library provides two functions: `pack` and `unpack`.

`pack` is called as follows: `pack(F,x1,x2,...)`, where `F` is a string describing
how the values `x1`, `x2`, ... are to be interpreted and formatted. Each letter
in the format string `F` consumes one of the given values. Only values of type
number or string are accepted. `pack` returns a (binary) string containing the
values packed as described in `F`. The letter codes understood by pack are listed
in lpack.c (they are inspired by Perl's codes but are not the same). Numbers
following letter codes in `F` indicate repetitions.

`unpack` is called as follows: `unpack(s,F,[init])`, where `s` is a (binary) string
containing data packed as if by `pack`, `F` is a format string describing what is
to be read from `s`, and the optional `init` marks where in `s` to begin reading the
values. `unpack` returns one value per letter in `F` until `F` or `s` is exhausted
(the letters codes are the same as for `pack`, except that numbers following ``A'`
are interpreted as the number of characters to read into the string, not as
repetitions).

The first value returned by `unpack` is the next unread position in `s`, which can
be used as the init position in a subsequent call to `unpack`. This allows you to
unpack values in a loop or in several steps. If the position returned by `unpack`
is beyond the end of `s`, then `s` has been exhausted; any calls to `unpack` starting
beyond the end of `s` will always return `nil` values.

-------------------------------------------------------------------------------

```
pack library:
pack(f,...) unpack(s,f,[init])
```

-------------------------------------------------------------------------------