DevToys Web Pro iconDevToys Web ProBlogue
Avalie-nos:
Experimente a extensão do navegador:

Codificador / Descodificador VarInt

12 bytes
Modo

Valores decimais

  • Saída VarInt

  • Detalhes técnicos

    Como Funciona o Codificador / Descodificador VarInt

    O Que a Ferramenta Faz

    A ferramenta VarInt codifica inteiros sem sinal como inteiros de comprimento variável LEB128 ao estilo Protobuf e descodifica streams binários VarInt de volta para listas de inteiros. Cada valor é codificado em 1–10 bytes dependendo da sua magnitude, com o bit mais significativo de cada byte a indicar se se seguem mais bytes. A saída é apresentada como um array de bytes, hexadecimal ou Base64 para fácil incorporação em testes e fixtures.

    Casos de Uso Comuns para Programadores

    Engenheiros a depurar payloads no wire-format do Protobuf usam a codificação/descodificação VarInt para inspecionar tags de campos e valores de campos de inteiros sem sinal sem iniciar um runtime Protobuf completo. Programadores de Bitcoin e de outras criptomoedas analisam comprimentos de scripts e contagens de transações codificados em VarInt. A ferramenta também é útil ao fazer engenharia reversa de protocolos binários personalizados que adotam LEB128 devido à sua compacidade para números pequenos.

    Formatos, Tipos ou Variantes de Dados

    LEB128 (Little-Endian Base 128) emite 7 bits de payload por byte, com o bit mais significativo a atuar como sinalizador de continuação. Números pequenos (0–127) usam um único byte; números até 16.383 usam dois bytes; e assim sucessivamente. As entradas aceitam números decimais separados por espaços, vírgulas ou quebras de linha. As saídas estão disponíveis em hexadecimal, Base64 e notação de array de bytes em bruto. Inteiros com sinal podem ser codificados aplicando primeiro a transformação ZigZag (n << 1) ^ (n >> 31).

    Erros Comuns e Casos Limite

    A precisão dos números em JavaScript vai até 2^53 − 1; valores acima de Number.MAX_SAFE_INTEGER não podem ser codificados com segurança. Streams VarInt truncados (sem o byte terminador) descodificam parcialmente e devolvem um erro indicando o offset. Números negativos não podem ser codificados diretamente — use primeiro a codificação ZigZag. Evite copiar bytes VarInt a partir de capturas de ecrã onde o padding Base64 possa ter sido removido, pois padding em falta altera os limites dos bytes.

    Quando Usar Esta Ferramenta vs Código

    Use a ferramenta no browser para uma inspeção rápida de bytes do wire do Protobuf durante a depuração ou ao escrever testes. Para codificação em produção, use bibliotecas VarInt nativas da linguagem (`varint` no npm, `binary.varint` em encoding/binary do Go, `decode_varint` em google.protobuf.internal do Python), que tratam streaming, recuperação de erros e transformação ZigZag numa única chamada.