bitsy
v0.0.5
Published
Fast and efficient bitset backed by a byte buffer
Downloads
94
Readme
Bitsy is a bitset made of real bits
You can create a bitset in many ways. I've seen some bold implementations use literal strings of 1s and 0s. I've also seen quite a few array based ones, either using booleans or numbers. Bitsy uses real bits backed by a byte buffer.
Usage
First npm install bitsy
var createBitsy = require('bitsy');
// bitsyInstance = createBitsy([size]) (or new createBitsy.Bitsy([size]))
// Create a 10 MB bitset.
var MEGABYTE_IN_BITS = 1048576 * 8;
var bitsy = createBitsy(10 * MEGABYTE_IN_BITS);
// Bitsy.prototype.setSize(newSize)
bitsy.setSize(0); // Truncate bitset and release memory
bitsy.setSize(bitsy.length * 2); // double the bitset size
// Bitsy.prototype.set(index, bitValue)
bitsy.set(200, false);
// trueOrFalse = Bitsy.prototype.get(index)
var bitValue = bitsy.get(200);
// Bitsy.prototype.copyTo(target, [targetFirstBitIndex], [sourceFirstBitIndex], [sourceLastBitIndex])
var a = createBitsy(1000);
a.set(100, true);
var b = createBitsy(50);
a.copyTo(b, 0, 80, 120); // Copy the bit range 80-120 form a to b
b.get(20) === b.get(100);
// Bitsy.prototype.copyFrom(source, [sourceFirstBitIndex], [sourceLastBitIndex], [targetFirstBitIndex])
var b = createBitsy(50);
// Copy the bit range 80-120 form a to b
b.copyFrom(a, 80, 120, 0);
b.get(20) === a.get(100);
// Bitsy.prototype.slice(begin, end)
// Slicing works just like JavaScript Array.prototype.slice
// except it returns a new Bitsy instance.
// create copy of b called 'a'
var a = b.slice();
// take the 10th bit through the last bit of b and use them to create 'a'
var a = b.slice(10);
// take the 10th bit through the 13th bit of b and use them to create 'a'
var a = b.slice(10, 14); // Note that the ending index is excluded
// take the last 5 bits of b and use them to create 'a'
var a = b.slice(-5);
// Bitsy.prototype.toString([type])
a.toString(); // Hex representation
a.toString('base64'); // Base64 representation
a.toString('binary'); // Binary represetnation