README
@plugnet/binary-encoding-utilities
Provides zero-dependency utility functions for plugnet's binary encoding needs.
Installing
npm install --save @plugnet/binary-encoding-utilities
// or
yarn add @plugnet/binary-encoding-utilities
Development
Testing:
npm test
Linting:
npm run lint
API
Interface {
isObject,
printBytes,
flipEndianness,
flipU8aEndianness,
numberToLEBytes,
LEBytesToNumber,
getStringFromU8a,
}
isObject
Checks whether a value is an object. Returns a boolean.
isObject(value) -> Boolean
printBytes
A debug helper. Prints to stdout a Uint8Array, or a window onto a Uint8Array, in
its binary representation.
arrayis theUint8Arrayto read frombytesis the byte count to read. Defaults to thearraylength.offsetis the starting byte, or the first byte to read.
Returns undefined.
printBytes(
array: Uint8Array,
bytes:Number={array.length},
offset:Number=0
) -> Undefined
flipEndianness
Recursively flips the endianness of a number or typed aray value of a particular bit length.
Note: Javascript Number is Big Endian.
inputis the number to be flipped.bitsindicates the bit length of the number to be flipped.offsetspecifies how many places from the right recursion will start from.
Returns a number.
flipEndianness(
input:Number,
bits:Number=8,
offset:Number=0
) -> Number
flipU8aEndianness
Flips the endianness of a window onto a Uint8Array.
inputis theUint8Arrayto be operated onbytesis the number of bytes to flip, from left to rightoffsetis the index to begin operating from
Modifies the Uint8Array in-place, and returns nothing.
flipU8aEndianness(
input:Uint8Array,
bytes:Number={input.length},
offset:Number=0
) -> Undefined
numberToLEBytes
Takes a number and converts it to LE bytes representation, before
writing it to a window onto a Uint8Array.
numberis the integer to be writtenarrayis theUint8Arrayto have the number placed intobytesis the number of bytes to move into theUint8Arrayoffsetis theUint8Arrayindex to begin writing to, left to right
Modifies the Uint8Array in-place, and returns nothing.
numberToLEBytes(
number:Number,
array:Uint8Array,
bytes:Number=0,
offset:Number=0
) -> Undefined
LEBytesToNumber
Takes a window onto a Uint8Array and converts it from a LE multi-byte
representation of an integer into a Number.
arrayis theUint8Arrayto have the number placed intobytesis the number of bytes to move into theUint8Arrayoffsetis theUint8Arrayindex to begin writing to, left to right
Returns a Number.
LEBytesToNumber(
array:Uint8Array,
bytes:Number={array.length},
offset:Number=0
) -> Undefined
getStringFromU8a
Takes a window onto a Uint8Array and extracts an ASCII string,
ignoring 0 values.
arrayis theUint8Arrayto extract the string frombytesis the number of bytes to extract from theUint8Arrayoffsetis the index to start reading from
getStringFromU8a(
array,
bytes,
offset,
) -> String