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.
- Host: GitHub
- URL: https://github.com/kong/lua-pack
- Owner: Kong
- License: mit
- Created: 2016-03-17T18:11:24.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-11-30T12:28:51.000Z (almost 3 years ago)
- Last Synced: 2025-03-31T18:41:57.350Z (6 months ago)
- Language: C
- Size: 9.77 KB
- Stars: 24
- Watchers: 37
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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])
```-------------------------------------------------------------------------------