kodieren v0.2.0
kodieren
Encoding related utilities
Installation
npm install kodieren
Table of Contents generated with DocToc
API
dectoen
Derives an encoding map from a decoding table
Parameters
arr
Array<T> encoding table
Returns Map<T, Number> decoding map
maskForBits
Gets the bit mask for the specified number of bits
Parameters
n
Number number of bits
Returns Number the bitmask, i.e. 111
for 3 bits
bitsToLayout
Takes a table of properties with bit length and derives bit layout from it. The bit layout is a hash map indexed by property name and each entry contains the index of the property in the bit field and it's mask needed to isolate it.
Example:
bitsToLayout([ [ 'foo', 2 ], [ 'bar', 4 ] ])
// => { foo: [ 0, 0b11 ], bar: [ 2, 0b1111 ] }
Parameters
Returns Object<Array<Number, Number>>
shiftMask
Righ shifts the given number as specified and then applies the given mask. This is useful to isolate information from a bit field.
Example
shiftMask(0b100010110011, 4, 0b1111)
=> 0b1011
Parameters
n
Number the number containing the information we wantdigits
Number the amountmask
Number the mask to apply after shifting
Returns Number the result after shift and mask was applied
isolate
Isolates some digits from a bit field
Parameters
bits
Number the bit fieldidx
Number the index at which the digits to isolate start (from the right)len
Number the amount of bits to isolate
Returns Number the isolated bits
number
An array of numbers whose index is equal it's value. Useful if we need to pass a table when encoding a number.
Type: Number
bin
Renders a binary representation of the given number padded as specified
Parameters
Returns String the rendered number
Encoder
Instantiates an encoder that uses the decodeArray to encode/decode to/from.
Example
const decodeArray = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' ]
const encoder = new Encoder(decodeArray, [ 0, 0b111 ])
const encoded = encoder.encode('c')
const decoded = encoder.decode(encoded)
console.log({ encoded, decoded })
// => { encoded: 2, decoded: 'c' }
Parameters
decodeArray
Array<T> the decode/encode mapArray.null
<Number, Number>[ bitIdx, mask ]
used to isolate values from the given bitspreEncode
function? conversion function run before an item is encoded (optional, defaultidentity
)postDecode
function? conversion function run after an item is decoded (optional, defaultidentity
)
Returns Encoder instance
Encoder.encode
Encodes the item to bits according to the encoding table derived from the decodeArray
Parameters
item
T item to encode
Returns Number bits representing the item
Encoder.decode
Decodes the bits from the decodeArray
Parameters
bits
Number bits to decode
Returns T the item represented by the bits
License
MIT