Rutas
/
WebAssembly
WebAssembly
/
Ejercicios
/
Cantidad de longitud variable
Cantidad de longitud variable

Cantidad de longitud variable

Media

Instrucciones

Implementa la codificación y decodificación de cantidades de longitud variable.

El objetivo de este ejercicio es implementar la codificación y decodificación VLQ.

En resumen, el propósito de esta codificación es codificar valores enteros de forma que se ahorren bytes. Solo los primeros 7 bits de cada byte son significativos (justificados a la derecha; algo así como un byte ASCII). Así que, si tienes un valor de 32 bits, tienes que desempaquetarlo en una serie de bytes de 7 bits. Por supuesto, tendrás un número variable de bytes en función de tu entero. Para indicar cuál es el último byte de la serie, dejas el bit n.º 7 a 0. En todos los bytes anteriores, pones el bit n.º 7 a 1.

Así que, si un entero está entre 0-127, se puede representar con un solo byte. Aunque VLQ puede trabajar con números de tamaños arbitrarios, en este ejercicio nos limitaremos 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

Direcciones reservadas

El búfer para los datos de entrada usa los bytes 64 a 191 de la memoria lineal.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
WebAssembly Exercism

¿Listo para empezar Cantidad de longitud variable?

Regístrate en Exercism para aprender y dominar WebAssembly con 87 ejercicios y mentoría humana real, todo gratis.