Implementa la codificación y decodificación de cantidad de longitud variable.
El objetivo de este ejercicio es implementar la codificación y decodificación VLQ.
En resumen, el objetivo de esta codificación es codificar valores enteros de una forma que ahorre bytes. Solo los primeros 7 bits de cada byte son significativos (justificados a la derecha; algo parecido a un byte ASCII). Entonces, si tienes un valor de 32 bits, debes desempaquetarlo en una serie de bytes de 7 bits. Por supuesto, tendrás una cantidad variable de bytes según cuál sea tu entero. Para indicar cuál es el último byte de la serie, dejas el bit #7 en cero. En todos los bytes anteriores, pones el bit #7 en uno.
Entonces, si un entero está entre 0-127, se puede representar con un solo byte.
Aunque VLQ puede manejar números de tamaños arbitrarios, para este ejercicio nos limitaremos únicamente a números que quepan en un entero sin signo de 32 bits.
Aquí tienes ejemplos de enteros como valores de 32 bits, y las cantidades de longitud variable a las que se traducen:
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
Regístrate en Exercism para aprender y dominar Raku con 94 ejercicios y mentoría humana real, todo gratis.