實作可變長度數量的編碼與解碼。
這項練習的目標是實作 VLQ 的編碼與解碼。
簡而言之,這種編碼的目標是用能節省位元組的方式來編碼整數值。 每個位元組只有前 7 個位元具有意義(靠右對齊;有點像 ASCII 位元組)。 所以,如果你有一個 32 位元的值,就必須把它拆解成一連串 7 位元的位元組。 當然,位元組的數量會依你的整數而有所不同。 為了指出哪一個位元組是這一系列中的最後一個,你會讓第 7 個位元保持為 0。 在前面所有的位元組中,則會把第 7 個位元設為 1。
所以,如果整數介於 0-127 之間,就可以用一個位元組來表示。
雖然 VLQ 能處理任意大小的數字,但在這項練習中,我們只處理能放進 32 位元無號整數的數字。
以下是一些整數以 32 位元值表示的例子,以及它們所轉換成的可變長度數量:
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