Codificador / Descodificador VarInt
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.