---
-- Pack and unpack binary data.
--
-- A problem script authors often face is the necessity of encoding values
-- into binary data. For example after analyzing a protocol the starting
-- point to write a script could be a hex dump, which serves as a preamble
-- to every sent packet. Although it is possible to work with the
-- functionality Lua provides, it's not very convenient. Therefore NSE includes
-- Binlib, based on lpack (http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/)
-- by Luiz Henrique de Figueiredo.
--
-- The Binlib functions take a format string to encode and decode binary
-- data. Packing and unpacking are controlled by the following operator
-- characters:
-- * H hex string
-- * B bit string
-- * x null byte
-- * z zero-terminated string
-- * p string preceded by 1-byte integer length
-- * P string preceded by 2-byte integer length
-- * a string preceded by 4-byte integer length
-- * A string
-- * f float
-- * d double
-- * n Lua number
-- * c char (1-byte integer)
-- * C byte = unsigned char (1-byte unsigned integer)
-- * s short (2-byte integer)
-- * S unsigned short (2-byte unsigned integer)
-- * i int (4-byte integer)
-- * I unsigned int (4-byte unsigned integer)
-- * l long (8-byte integer)
-- * L unsigned long (8-byte unsigned integer)
-- * < little endian modifier
-- * > big endian modifier
-- * = native endian modifier
--
-- Note that the endian operators work as modifiers to all the
-- characters following them in the format string.
module "bin"
--- Returns a binary packed string.
--
-- The format string describes how the parameters (p1,
-- ...) will be interpreted. Numerical values following operators
-- stand for operator repetitions and need an according amount of parameters.
-- Operators expect appropriate parameter types.
--
-- Note: on Windows packing of 64-bit values > 2^63 currently
-- results in packing exactly 2^63.
-- @param format Format string, used to pack following arguments.
-- @param ... The values to pack.
-- @return String containing packed data.
function pack(format, ...)
--- Returns values read from the binary packed data string.
--
-- The first return value of this function is the position at which unpacking
-- stopped. This can be used as the init value for subsequent
-- calls. The following return values are the values according to the format
-- string. Numerical values in the format string are interpreted as repetitions
-- like in pack, except if used with A,
-- B, or H, in which cases the number tells
-- unpack how many bytes to read. unpack stops if
-- either the format string or the binary data string are exhausted.
-- @param format Format string, used to unpack values out of data string.
-- @param data String containing packed data.
-- @param init Optional starting position within the string.
-- @return Position in the data string where unpacking stopped.
-- @return All unpacked values.
function unpack(format, data, init)