Codificador / Decodificador de VarInt
Valores decimales
Salida VarInt
Detalles técnicos
Cómo funciona el codificador / decodificador VarInt
Qué hace la herramienta
La herramienta VarInt codifica enteros sin signo como enteros de longitud variable LEB128 al estilo Protobuf y decodifica flujos binarios VarInt de vuelta a listas de enteros. Cada valor se codifica en 1–10 bytes según su magnitud, y el bit alto de cada byte indica si siguen más bytes. La salida se muestra como un array de bytes, hexadecimal o Base64 para facilitar su inserción en pruebas y fixtures.
Casos de uso comunes para desarrolladores
Los ingenieros que depuran cargas útiles en formato wire de Protobuf usan la codificación/decodificación VarInt para inspeccionar etiquetas de campos y valores de campos enteros sin signo sin levantar un runtime completo de Protobuf. Los desarrolladores de Bitcoin y otras criptomonedas analizan longitudes de scripts codificadas en VarInt y recuentos de transacciones. La herramienta también es útil al hacer ingeniería inversa de protocolos binarios personalizados que adoptan LEB128 por su compacidad para números pequeños.
Formatos de datos, tipos o variantes
LEB128 (Little-Endian Base 128) emite 7 bits de carga útil por byte, con el bit más significativo actuando como bandera de continuación. Los números pequeños (0–127) usan un solo byte; los números hasta 16.383 usan dos bytes; y así sucesivamente. Las entradas aceptan números decimales separados por espacios en blanco, comas o saltos de línea. Las salidas están disponibles en hexadecimal, Base64 y notación de array de bytes en bruto. Los enteros con signo pueden codificarse aplicando primero la transformación ZigZag (n << 1) ^ (n >> 31).
Errores comunes y casos límite
La precisión de los números en JavaScript llega hasta 2^53 − 1; los valores por encima de Number.MAX_SAFE_INTEGER no pueden codificarse de forma segura. Los flujos VarInt truncados (sin el byte terminador) se decodifican parcialmente y devuelven un error indicando el desplazamiento. Los números negativos no pueden codificarse directamente: usa primero la codificación ZigZag. Evita copiar bytes VarInt desde capturas de pantalla donde el relleno de Base64 puede haberse eliminado, ya que la falta de relleno altera los límites de bytes.
Cuándo usar esta herramienta vs código
Usa la herramienta del navegador para una inspección rápida de bytes wire de Protobuf durante la depuración o mientras escribes pruebas. Para codificación en producción, usa bibliotecas VarInt nativas del lenguaje (`varint` en npm, `binary.varint` en encoding/binary de Go, `decode_varint` en google.protobuf.internal de Python), que manejan streaming, recuperación de errores y transformación ZigZag en una sola llamada.