Implemente a codificação e a decodificação de quantidade de comprimento variável.
O objetivo deste exercício é implementar a codificação/decodificação VLQ.
Em resumo, o objetivo dessa codificação é codificar valores inteiros de uma forma que economize bytes. Apenas os primeiros 7 bits de cada byte são significativos (alinhados à direita, mais ou menos como um byte ASCII). Então, se você tem um valor de 32 bits, precisa desmembrá-lo em uma série de bytes de 7 bits. Claro que você vai ter um número variável de bytes, dependendo do seu inteiro. Para indicar qual é o último byte da série, você deixa o bit nº 7 zerado. Em todos os bytes anteriores, você ativa o bit nº 7.
Assim, se um inteiro está entre 0-127, ele pode ser representado como um único byte.
Embora a VLQ consiga lidar com números de tamanhos arbitrários, neste exercício vamos nos restringir apenas a números que cabem em um inteiro sem sinal de 32 bits.
Aqui estão exemplos de inteiros como valores de 32 bits e as quantidades de comprimento variável em que eles se transformam:
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
O buffer para os dados de entrada usa os bytes 64-191 da memória linear.
Crie sua conta no Exercism para aprender e dominar WebAssembly com 87 exercícios e mentoria humana de verdade, tudo de graça.