Ferramenta Protocol Buffers
Codifique, decodifique e valide mensagens Protocol Buffers
Schema Proto
Informações do Schema
Entrada
Analise o schema e selecione um tipo de mensagem para gerar campos de formulário
Saída
Campos Brutos
| Campo # | Tipo Wire | Valor |
|---|
Documentação Protocol Buffers
O que é Protocol Buffers?
Protocol Buffers (Protobuf) é um mecanismo extensível, neutro em relação à linguagem e plataforma, para serialização de dados estruturados, desenvolvido pelo Google. É menor, mais rápido e mais simples que XML e JSON para serialização de dados.
Recursos Principais
- Neutro em relação à linguagem e plataforma
- Menor e mais rápido que XML/JSON
- Tipagem forte com definição de schema
- Compatibilidade retroativa e futura
- Geração automática de código
- Codificação binária eficiente
Como Usar Esta Ferramenta
- Digite sua definição de schema .proto no editor de schema
- Clique em Analisar Schema para validar e analisar o schema
- Selecione o tipo de mensagem com o qual deseja trabalhar
- Para codificar: Digite dados JSON e clique em Codificar
- Para decodificar: Digite dados binários e clique em Decodificar
- Use Decodificação Bruta para analisar dados binários sem schema
Recursos da Ferramenta
Codificar
Converta dados JSON para formato binário Protocol Buffers. Suporta entrada baseada em formulário para fácil entrada de dados com validação de tipo.
Decodificar
Converta dados binários Protocol Buffers de volta para formato JSON legível. Suporta formatos de entrada Base64, Hex e hex estilo C.
Decodificação Bruta
Analise dados binários protobuf sem schema. Útil para depuração, engenharia reversa ou análise de mensagens desconhecidas.
Entrada de Formulário
Interface de formulário amigável que gera formulários de entrada baseados em seu schema. Suporta mensagens aninhadas, enums e campos repetidos.
Referência de Sintaxe Proto
Protocol Buffers usa uma sintaxe simples para definir tipos de mensagem:
syntax = "proto3";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phones = 4;
}
syntax: Especifica a versão do protobuf (proto2 ou proto3)message: Define um tipo de mensagem com camposfield: Cada campo tem um tipo, nome e número únicoenum: Define tipos de enumeraçãorepeated: Marca um campo como repetido (array/lista)optional: Marca um campo como opcional (proto3)
Tipos Escalares
Protocol Buffers suporta vários tipos escalares:
| Tipo | Descrição | Padrão |
|---|---|---|
| int32, int64 | Inteiros com sinal (codificação de comprimento variável) | 0 |
| uint32, uint64 | Inteiros sem sinal | 0 |
| sint32, sint64 | Inteiros com sinal com codificação ZigZag (eficiente para números negativos) | 0 |
| fixed32, fixed64 | Inteiros sem sinal de largura fixa (4 ou 8 bytes) | 0 |
| sfixed32, sfixed64 | Inteiros com sinal de largura fixa (4 ou 8 bytes) | 0 |
| float, double | Números de ponto flutuante (32 ou 64 bit) | 0.0 |
| bool | Valores booleanos (verdadeiro/falso) | false |
| string | Strings de texto codificadas em UTF-8 | "" |
| bytes | Dados binários arbitrários | empty |
Tipos Wire
Protobuf usa tipos wire para determinar como ler valores de dados binários:
| Tipo Wire | Significado | Usado Para |
|---|---|---|
| 0 | Varint | int32, int64, uint32, uint64, sint32, sint64, bool, enum |
| 1 | 64-bit | fixed64, sfixed64, double |
| 2 | Length-delimited | string, bytes, embedded messages, packed repeated |
| 5 | 32-bit | fixed32, sfixed32, float |
Melhores Práticas
- Use sintaxe proto3 para novos projetos - é mais simples e amplamente suportada
- Mantenha os números de campo estáveis - nunca reutilize ou altere números para campos existentes
- Use nomes de campo significativos que descrevam claramente os dados
- Reserve números de campo 1-15 para campos usados com frequência (eles usam 1 byte)
- Use a palavra-chave 'repeated' para arrays/listas de valores
- Defina enums para campos que têm um conjunto fixo de valores possíveis
Perguntas Frequentes
O que é Protocol Buffers (Protobuf)?
Protocol Buffers é um mecanismo extensível, neutro em termos de linguagem e plataforma, para serializar dados estruturados. É semelhante ao JSON, mas menor, mais rápido e gera ligações de linguagem nativas. É amplamente utilizado em microsserviços gRPC.
Como usar esta ferramenta Protobuf online?
Primeiro, cole sua definição de esquema `.proto` no editor (ou carregue um exemplo). Clique em 'Analisar Esquema' e selecione um tipo de mensagem. Em seguida, alterne entre os modos 'Codificar' (JSON → Binário) e 'Decodificar' (Binário → JSON) para processar seus dados.
O que é 'Decodificação Bruta' (Raw Decode)?
A decodificação bruta permite inspecionar uma mensagem Protobuf binária mesmo sem o arquivo `.proto`. Ela analisa a estrutura binária e exibe números de campo, tipos de fio e valores, o que é incrivelmente útil para depuração ou engenharia reversa de pacotes desconhecidos.
Meus dados são processados com segurança?
Sim. Esta ferramenta é executada 100% no seu navegador usando JavaScript (protobuf.js). Seus esquemas, dados JSON e dados binários nunca são enviados para nossos servidores, garantindo a privacidade de suas informações confidenciais.
Casos de Uso Comuns
- Comunicação entre serviços em microsserviços (gRPC)
- Armazenamento de dados e cache
- Arquivos de configuração
- Protocolos de rede e APIs
Referências
Ferramentas Relacionadas
Formatador JSON
Formate e valide dados JSON para melhorar a legibilidade e depuração
Gerador Schema para SQL DDL
Converta dados CSV/JSON em instruções SQL DDL CREATE TABLE com suporte MySQL, PostgreSQL e inferência automática de tipo de dados
Conversor JSON YAML
Converta entre formatos JSON e YAML com indentação personalizada e suporte a estilo flow/block
Codificador/Decodificador Base64
Codifique e decodifique strings Base64 rapidamente, suportando conversão de texto e arquivo
Formatador XML
Formate e valide dados XML com destaque de sintaxe
Conversor de Base
Converter entre sistemas binário, octal, decimal e hexadecimal com suporte para bases personalizadas (2-36)