Inspecionar Protobuf e esquemas locais

Protobuf tipos0/1/2/3/4/5 com posições e bytes exatos; sem esquema não se adivinham nomes/texto.

  • Funciona no navegador
  • Sem envio
  • Verifique antes de transferir

Os ficheiros e os esquemas ficam neste separador e num processo local do navegador. Nada é enviado nem guardado automaticamente. Se limpar ou fechar, perde os dados introduzidos; guarde os originais e os resultados de que precisa.

Protobuf tipos0/1/2/3/4/5 com posições e bytes exatos; sem esquema não se adivinham nomes/texto. Gramática local proto2/proto3, imports locais, escalares/enums/mensagens/grupos, repetidos compactados, mapas e oneof. Opcionais ausentes, obrigatórios exigidos. Fragmentos fundem-se; escalares usam último valor, oneof último membro ativo. Maps preservam duplicados para inspeção, não JSON canónico. Editions/extensões não suportadas. Sem imports remotos, construtores/codecs gerados, eval ou execução. Inteiros em texto decimal, bytes hex; não certifica semântica da aplicação. Guarde relatórios e original; schemas.json conserva esquemas locais. Fragmentos de mensagem num valor de mapa fundem-se; entradas ficam separadas e escalares usam a última ocorrência.

Ficheiro até 16 MiB; Protobuf até 1 MiB; cada esquema até 256 KiB e todos juntos até 1 MiB. Profundidade 64, 20.000 nós de metadados ou de estrutura binária e 100.000 valores guardados. Memória de descodificação de 32 MiB; saída gerada de 8 MiB, mais o original. Pré-visualização de 200 linhas; exportação de 10.000 linhas. O processo local pára ao fim de 5 segundos. Os 64 MiB de memória do SQLite não correspondem a toda a memória do navegador.

Ficheiro binário local

0 B

Interpretação

Método e limites

Perfil suportado

Protobuf tipos0/1/2/3/4/5 com posições e bytes exatos; sem esquema não se adivinham nomes/texto. Gramática local proto2/proto3, imports locais, escalares/enums/mensagens/grupos, repetidos compactados, mapas e oneof. Opcionais ausentes, obrigatórios exigidos. Fragmentos fundem-se; escalares usam último valor, oneof último membro ativo. Maps preservam duplicados para inspeção, não JSON canónico. Editions/extensões não suportadas. Sem imports remotos, construtores/codecs gerados, eval ou execução. Inteiros em texto decimal, bytes hex; não certifica semântica da aplicação. Guarde relatórios e original; schemas.json conserva esquemas locais. Fragmentos de mensagem num valor de mapa fundem-se; entradas ficam separadas e escalares usam a última ocorrência.

Limites de recursos

Ficheiro até 16 MiB; Protobuf até 1 MiB; cada esquema até 256 KiB e todos juntos até 1 MiB. Profundidade 64, 20.000 nós de metadados ou de estrutura binária e 100.000 valores guardados. Memória de descodificação de 32 MiB; saída gerada de 8 MiB, mais o original. Pré-visualização de 200 linhas; exportação de 10.000 linhas. O processo local pára ao fim de 5 segundos. Os 64 MiB de memória do SQLite não correspondem a toda a memória do navegador.

Os ficheiros e os esquemas ficam neste separador e num processo local do navegador. Nada é enviado nem guardado automaticamente. Se limpar ou fechar, perde os dados introduzidos; guarde os originais e os resultados de que precisa.

Como inspecionar

  1. Ficheiro binário local

    Carregue uma mensagem binária. O modo wire não precisa de esquema; o modo com esquema exige ficheiros .proto locais, o nome do ficheiro principal e um tipo de mensagem explícito. Carregue o exemplo para começar com sample.proto e a mensagem Sample.

  2. Esquema e metadados

    Os bytes do exemplo começam por 08 96 01 e seguem-se com um campo delimitado por comprimento. Com Sample {int64 id=1; string name=2;}, são descodificados como id=150 e name=Café. O modo wire mostra os números dos campos, os intervalos de bytes e os dados em bruto, em vez de inventar nomes.

  3. Verificar e guardar exportações

    Compare os campos descodificados com as posições wire e o número de campos desconhecidos. Guarde report.json, schemas.json (se tiver fornecido esquemas) e original.pb. Os valores inteiros são cadeias decimais; os bytes são apresentados em hexadecimal e não como texto UTF-8 presumido.

Método e limites

Porque é que os relatórios do modo wire e do modo com esquema são diferentes?

O formato wire, por si só, não permite saber se um valor delimitado por comprimento é texto, bytes ou uma submensagem. Essa interpretação vem do esquema selecionado. Os campos opcionais em falta continuam ausentes; os campos repetidos mantêm todas as ocorrências e o oneof segue o último membro ativo. O relatório não é JSON canónico de Protobuf nem uma validação semântica da aplicação.

Porque não é possível ler este ficheiro ou esta seleção?

Indique o nome completo e exato da mensagem e forneça as importações locais. Varints truncados, tipos wire incorretos, campos obrigatórios em falta e esquemas ausentes são erros. Não descodifique como mensagem em bruto um envelope de aplicação comprimido ou com enquadramento.

O que este inspetor não faz deliberadamente?

Inspeção local de proto2 e proto3; as Editions e as extensões não são suportadas. Até 16 ficheiros de esquema locais, 1 MiB no total, e mensagem até 1 MiB. Sem importações remotas, sem código de aplicação gerado e sem execução; as entradas duplicadas de map continuam visíveis para inspeção.