diff --git a/encode.js b/encode.js index 3320033..34a11a6 100644 --- a/encode.js +++ b/encode.js @@ -3,17 +3,22 @@ module.exports = encode var MSB = 0x80 , REST = 0x7F , MSBALL = ~REST + , INT = Math.pow(2, 31) function encode(num, out, offset) { out = out || [] offset = offset || 0 var oldOffset = offset - while(num & MSBALL) { - out[offset++] = (num & 0xFF) | MSB + while(num >= INT) { + out[offset++] = (num & 0xFF) | MSB + num /= 128 + } + while(num >= 0x80) { + out[offset++] = (num & 0xFF) | MSB num >>>= 7 } - out[offset] = num + out[offset] = num | 0 encode.bytesWritten = offset - oldOffset + 1