Codificador / Decodificador VarInt
Valores decimais
Saída VarInt
Detalhes técnicos
Como Funciona o Codificador / Decodificador VarInt
O Que a Ferramenta Faz
A ferramenta VarInt codifica inteiros sem sinal como inteiros de comprimento variável LEB128 no estilo Protobuf e decodifica streams binários VarInt de volta para listas de inteiros. Cada valor é codificado em 1–10 bytes dependendo de sua magnitude, com o bit mais alto de cada byte sinalizando se mais bytes vêm em seguida. A saída é mostrada como um array de bytes, hexadecimal ou Base64 para facilitar a incorporação em testes e fixtures.
Casos de Uso Comuns para Desenvolvedores
Engenheiros depurando payloads no wire format do Protobuf usam encode/decode de VarInt para inspecionar tags de campos e valores de campos de inteiros sem sinal sem precisar subir um runtime completo do Protobuf. Desenvolvedores de Bitcoin e outras criptomoedas analisam comprimentos de script 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 por sua compactação para números pequenos.
Formatos de Dados, Tipos ou Variantes
LEB128 (Little-Endian Base 128) emite 7 bits de payload por byte, com o bit mais significativo atuando como um sinalizador de continuação. Números pequenos (0–127) usam um único byte; números até 16.383 usam dois bytes; e assim por diante. As entradas aceitam números decimais separados por espaços em branco, vírgulas ou quebras de linha. As saídas estão disponíveis em hexadecimal, Base64 e notação de array de bytes bruto. Inteiros com sinal podem ser codificados aplicando primeiro a transformação ZigZag (n << 1) ^ (n >> 31).
Armadilhas Comuns e Casos de Borda
A precisão de 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) decodificam parcialmente e retornam um erro indicando o offset. Números negativos não podem ser codificados diretamente — use a codificação ZigZag primeiro. Evite copiar bytes VarInt de capturas de tela em que o padding do Base64 pode ter sido removido, pois padding ausente altera os limites de bytes.
Quando Usar Esta Ferramenta vs Código
Use a ferramenta no navegador 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 lidam com streaming, recuperação de erros e transformação ZigZag em uma única chamada.