clebert/r-pi-brick

View on GitHub
lib/bitwriter.js

Summary

Maintainability
A
25 mins
Test Coverage
/* jshint bitwise: false */

'use strict';

exports.BitWriter = function (data, bitOffset) {
    this.writeValue = function (value, bitLength) {
        for (var i = 0; i < bitLength; i += 1) {
            var bitMask    = (1 << ((bitOffset + i) % 8));
            var byteOffset = (bitOffset + i) >> 3;

            if (value & 1) {
                data[byteOffset] |= bitMask;
            } else {
                data[byteOffset] &= ~bitMask;
            }

            value = value >> 1;
        }

        bitOffset += bitLength;

        return this;
    };
};