Derives an encoding map from a decoding table
(Array<T>)
encoding table
Map<T, Number>
:
decoding map
Gets the bit mask for the specified number of bits
(Number)
number of bits
Number
:
the bitmask, i.e.
111
for 3 bits
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.
bitsToLayout([ [ 'foo', 2 ], [ 'bar', 4 ] ])
// => { foo: [ 0, 0b11 ], bar: [ 2, 0b1111 ] }
Object<Array<Number, Number>>
:
Righ shifts the given number as specified and then applies the given mask. This is useful to isolate information from a bit field.
shiftMask(0b100010110011, 4, 0b1111)
=> 0b1011
(Number)
the number containing the information we want
(Number)
the amount
(Number)
the mask to apply after shifting
Number
:
the result after shift and mask was applied
Isolates some digits from a bit field
(Number)
the bit field
(Number)
the index at which the digits to isolate start (from the right)
(Number)
the amount of bits to isolate
Number
:
the isolated bits
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
Renders a binary representation of the given number padded as specified
String
:
the rendered number
Instantiates an encoder that uses the decodeArray to encode/decode to/from.
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' }
(Array<T>)
the decode/encode map
(any)
<Number, Number>
[ bitIdx, mask ]
used to isolate values from the given bits
(function?
= identity
)
conversion function run before an item is encoded
(function?
= identity
)
conversion function run after an item is decoded
Encoder
:
instance
Encodes the item to bits according to the encoding table derived from the decodeArray
(T)
item to encode
Number
:
bits representing the item
Decodes the bits from the decodeArray
(Number)
bits to decode
T
:
the item represented by the bits