A simple set of functions for converting between integer and VLQ buffer values
$ npm install --save vlq-buffer
var vlqBuffer = require('vlq-buffer');
This method converts an integer to a Buffer containing the VLQ representation of that integer.
var myInt = 2097151;
var bufferValue = vlqBuffer.int2VLQBuffer(myInt);
// bufferValue == <Buffer ff ff 7f>
This method converts a Buffer containing a VLQ value to an integer.
var myVLQValue = new Buffer([0x81, 0x80, 0x00]);
var intValue = vlqBuffer.vlqBuffer2Int(myVLQValue);
// intValue == 16384
This method returns true if the given integer's binary value starts with zero, indicating tne end of the VLQ value. This is useful for identifying the final byte in a VLQ value when reading binary data.
var vlqStartIndex = readIndex; // start reading a vlq value and the current read index
var currentByte = bufferData.readUInt8(readIndex);
while (!vlqBuffer.isVLQLastByte(currentByte)) {
if (++readIndex >= bufferData.length) throw 'EOF error'; // EOF, no vql end found
currentByte = bufferData.readUInt8(readIndex);
}
var vlqValueBytes = bufferData.slice(vlqStartIndex, ++readIndex);
var intValue = vlq.vlqBuffer2Int(vlqValueBytes);