# Variable Length Quantity Implement variable length quantity encoding and decoding. The goal of this exercise is to implement [VLQ](https://en.wikipedia.org/wiki/Variable-length_quantity) encoding/decoding. In short, the goal of this encoding is to encode integer values in a way that would save bytes. Only the first 7 bits of each byte is significant (right-justified; sort of like an ASCII byte). So, if you have a 32-bit value, you have to unpack it into a series of 7-bit bytes. Of course, you will have a variable number of bytes depending upon your integer. To indicate which is the last byte of the series, you leave bit #7 clear. In all of the preceding bytes, you set bit #7. So, if an integer is between `0-127`, it can be represented as one byte. Although VLQ can deal with numbers of arbitrary sizes, for this exercise we will restrict ourselves to only numbers that fit in a 32-bit unsigned integer. Here are examples of integers as 32-bit values, and the variable length quantities that they translate to: ```text NUMBER VARIABLE QUANTITY 00000000 00 00000040 40 0000007F 7F 00000080 81 00 00002000 C0 00 00003FFF FF 7F 00004000 81 80 00 00100000 C0 80 00 001FFFFF FF FF 7F 00200000 81 80 80 00 08000000 C0 80 80 00 0FFFFFFF FF FF FF 7F ``` ## Setup Go through the setup instructions for JavaScript to install the necessary dependencies: http://exercism.io/languages/javascript ## Making the Test Suite Pass Execute the tests with: jasmine .spec.js Replace `` with the name of the current exercise. E.g., to test the Hello World exercise: jasmine hello-world.spec.js In many test suites all but the first test have been skipped. Once you get a test passing, you can unskip the next one by changing `xit` to `it`. ## Source A poor Splice developer having to implement MIDI encoding/decoding. [https://splice.com](https://splice.com) ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise.