DevToys Web Pro iconDevToys Web ProBlog
Califícanos:
Prueba la extensión del navegador:

Codificador / Decodificador de VarInt

12 bytes
Modo

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 arreglo de bytes, hexadecimal o Base64 para facilitar su inclusió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 y conteos de transacciones codificados como VarInt. 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, tipos o variantes de datos

    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 arreglo de bytes sin procesar. 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 numérica de 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 offset. Los números negativos no pueden codificarse directamente: usa primero la codificación ZigZag. Evita copiar bytes VarInt desde capturas de pantalla donde el padding de Base64 pudo haberse eliminado, ya que la falta de padding 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 al escribir 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.