packed
Binary Buffer parsing and packing that feels a little like C structs
Installation
npm install packed
Usage
var packed = ; // Create structure - from http://en.wikipedia.org/wiki/Transmission_Control_Protocolvar TcpHeaderStruct = ; var original = source_port: 13076 dest_port: 44112 sequence_number: 3322114 ack_number: 3322113 data_offset: 0x7 // reserved: -- auto-filled with zeros control: NS: 0 CWR: 1 ECE: 0 URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 1 FIN: 0 window_size: 4096 checksum: 33412 urgent_pointer: 0; // Pack data into a buffer that you can send ... anywherevar buffer = TcpHeaderStruct;// Unpack the buffer back into an objectvar data = TcpHeaderStruct; assert;
Methods
packed(structure_object)
Create a packed instance
Properties
packed.default_byte_order (defaults as 'BE')
Default byte order for field helpers without a suffix. Either 'BE', 'LE', or 'N' for big-endian, little-endian, or network.
Instance Methods
struct.pack(object)
Pack an object into a Buffer
struct.unpack(buffer)
Unpack a buffer into the struct
Structure Field Helpers
Signed Integers
packed.int8
8-bit integer (default byte order)
packed.int16
16-bit integer (default byte order)
packed.int16be
16-bit integer big-endian
packed.int16le
16-bit integer little-endian
packed.int16n
16-bit integer network order
packed.int32
32-bit integer (default byte order)
packed.int32be
32-bit integer big-endian
packed.int32le
32-bit integer little-endian
packed.int32n
32-bit integer network order
packed.int64
64-bit integer (default byte order)
packed.int64be
64-bit integer big-endian
packed.int64le
64-bit integer little-endian
packed.int64n
64-bit integer network order
Unsigned Integers
packed.uint8
8-bit unsigned integer (default byte order)
packed.uint16
16-bit unsigned integer (default byte order)
packed.uint16be
16-bit unsigned integer big-endian
packed.uint16le
16-bit unsigned integer little-endian
packed.uint16n
16-bit unsigned integer network order
packed.uint32
32-bit unsigned integer (default byte order)
packed.uint32be
32-bit unsigned integer big-endian
packed.uint32le
32-bit unsigned integer little-endian
packed.uint32n
32-bit unsigned integer network order
packed.uint64
64-bit unsigned integer (default byte order)
packed.uint64be
64-bit unsigned integer big-endian
packed.uint64le
64-bit unsigned integer little-endian
packed.uint64n
64-bit unsigned integer network order
Other
packed.string
Zero terminated String
packed.bits(number_of_bits)
Unsigned bits of variable length
License
Copyright (c) 2013 Matt Insler
Licensed under the MIT license.