Entenda os bytes do protocolo

decodificador Protobuf

Confira primeiro o wire bruto; inclua um .proto autocontido somente quando precisar de nomes e tipos declarados.

decodificador Protobuf

Entrada

Definição .proto opcional

Resultado

Bytes e schema são processados neste navegador, sem upload.

Opções

Digite uma mensagem wire ou varint.

Um decodificador Protobuf ajuda quando o log contém uma carga binária sem a definição da mensagem. Mesmo sem schema, você consegue ver número, tipo wire e limites de cada campo.

O formato de fio Protobuf não registra os nomes originais. Um valor delimitado por comprimento pode ser texto, bytes, mensagem aninhada ou números packed; a tela mostra possibilidades até que o .proto defina a interpretação.

Por que usar este decodificador Protobuf?

A interpretação fica ligada aos bytes originais.

Volte ao trecho exato do pacote

O decodificador Protobuf mostra offsets a partir de zero, tipo wire e hex original em cada campo. Um comprimento truncado aponta o byte em que a leitura falhou.

Uma sequência de bytes se divide em campos numerados ligados aos seus intervalos.

Adicione o schema sem perder o wire

Cole um .proto independente e escolha o tipo de mensagem. O JSON com nomes aparece ao lado dos campos brutos, permitindo conferir de onde veio cada valor.

Uma árvore de campos brutos está ligada a uma árvore interpretada pelo schema.

Três conferências antes de confiar no resultado

01

Escolha a codificação conscientemente

Hex é o padrão e aceita espaços, dois-pontos e prefixos 0x. Troque para Base64 se esse for o formato da captura; textos curtos podem ser válidos nos dois formatos.

02

Leia interpretações como hipóteses

Um varint pode significar uint64, inteiro com sinal, ZigZag, bool ou enum. Wire 2 pode ser texto, bytes, packed ou mensagem. Só a declaração no .proto resolve a ambiguidade.

03

Confira validade e posição

A execução automática aguarda 350 ms. Ao desligá-la, use Ctrl/Cmd + Enter. Qualquer mudança desativa copiar e baixar o resultado anterior; o offset final não inclui o próximo byte.

O que os bytes realmente mostram

Quatro tipos wire comuns

O decodificador Protobuf lê varint, fixed64, comprimento delimitado e fixed32. Chaves cortadas e grupos antigos geram erro no byte correspondente.

Varint exato até uint64

Decodifique um varint ou codifique um decimal no sentido inverso. A opção ZigZag interpreta sint64, e BigInt mantém a precisão que Number perderia.

JSON tipado com .proto

Um schema local autocontido permite escolher o tipo raiz e ler campos repetidos ou aninhados. Se o schema falhar, os campos wire brutos continuam disponíveis.

Hex fiel ao pacote recebido

O download apenas normaliza a escrita dos bytes de entrada. Não recodifica uma mensagem presumida, então serve para comparar com a captura original.

Onde termina a certeza do wire

Nomes exigem definição
Sem .proto, um decodificador Protobuf conhece número e tipo wire, não o nome original, rótulos de enum ou relações oneof. Esses dados não são inventados.
UTF-8 legível não prova string
Os mesmos bytes podem formar texto e uma mensagem aninhada válida. Use as alternativas como pistas e confirme o tipo no schema.
Um arquivo local independente
Imports, URLs remotas e download automático de dependências ficam fora do escopo. Resolva os tipos no projeto antes de colar a definição.
Sem retirar camadas de transporte
A entrada é uma mensagem wire pura. O cabeçalho de cinco bytes do gRPC e a compressão precisam ser removidos antes; não há codificação JSON para mensagem inteira.

Dúvidas sobre o decodificador Protobuf

Posso decodificar protobuf sem o arquivo .proto?

Sim, para estrutura, números de campo, tipos wire, offsets e bytes brutos. Nomes e tipos declarados precisam de um .proto correspondente.

O que significam os tipos de fio do protobuf?

Indicam como pular ou ler o valor seguinte: varint, fixed64, comprimento delimitado e fixed32. Não carregam toda a semântica do campo.

Devo colar o protobuf como hex ou base64?

Use Hex para pares de dígitos e Base64 para texto já codificado. A escolha é explícita para evitar uma detecção errada em entradas ambíguas.

Por que um varint é mostrado como vários números diferentes?

A mesma sequência pode significar uint64 ou sint64 em ZigZag. A declaração no schema é que define a leitura correta.

O payload decodificado é enviado para algum lugar?

Não. Payload e .proto opcional são processados no seu navegador, sem upload para o servidor.

Encontrou uma definição que deveria ser suportada?

Volte ao decodificador Protobuf

Use o decodificador Protobuf para comparar offsets e hex original com o schema antes de considerar uma leitura de campo definitiva.