JavaScript module for unpacking and packing based loosely around the Perl packing syntax.
Working demo can be found at unpack.isthe.link.
Lookup table for unpacking:
-
a
A string with arbitrary binary data, will be null padded. -
A
text (ASCII) string, will be space padded. -
b
A bit string (ascending bit order inside each byte). -
c
A signed char (8-bit) value. -
C
An unsigned char (octet) value. -
s
A signed short (16-bit) value. -
S
An unsigned short value. -
i
A signed integer (32-bit) value. -
I
A unsigned integer value. -
l
A signed long (64-bit) value. -
L
An unsigned long value. -
n
An unsigned short (16-bit) in "network" (big-endian) order. -
N
An unsigned long (32-bit) in "network" (big-endian) order. -
f
A single-precision float in native format. -
d
A double-precision float in native format. -
x
A null byte (a.k.a ASCII NUL, "\000", chr(0))
Each type can also include a number, such as A5
will unpack to a 5 byte ascii string.
Unless otherwise stated, endianness can be set to little by using <
, such as: <I I L
unpacks using little endian 2 32bit unsigned ints and 1 64 bit long.