Implementa a codificação e descodificação de quantidade de comprimento variável.
O objetivo deste exercício é implementar a codificação/descodificação VLQ.
Em resumo, o objetivo desta codificação é codificar valores inteiros de forma a poupar bytes. Apenas os primeiros 7 bits de cada byte são significativos (alinhados à direita; mais ou menos como um byte ASCII). Por isso, se tiveres um valor de 32 bits, tens de o dividir numa série de bytes de 7 bits. Claro que vais ter um número variável de bytes, dependendo do teu inteiro. Para indicar qual é o último byte da série, deixas o bit n.º 7 a zero. Em todos os bytes anteriores, colocas o bit n.º 7 a um.
Assim, se um inteiro estiver entre 0-127, pode ser representado por um byte.
Embora a VLQ consiga lidar com números de tamanhos arbitrários, neste exercício vamo-nos restringir apenas a números que cabem num 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 se traduzem:
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
Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.