學習軌道
/
Raku
Raku
/
練習
/
可變長度數量
可變長度數量

可變長度數量

簡單

說明

實作可變長度數量的編碼與解碼。

這項練習的目標是實作 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
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Raku Exercism

準備好開始 可變長度數量 了嗎?

註冊 Exercism,透過 94 個練習 和真人引導來學習並精通 Raku,全部免費。