Herramienta Protocol Buffers
Codificar, decodificar y validar mensajes Protocol Buffers
Esquema Proto
Información del Esquema
Entrada
Analice el esquema y seleccione un tipo de mensaje para generar los campos del formulario
Salida
Campos Crudos
| N° Campo | Tipo de Cable | Valor |
|---|
Documentación de Protocol Buffers
¿Qué es Protocol Buffers?
Protocol Buffers (Protobuf) es un mecanismo extensible, independiente del lenguaje y la plataforma, para serializar datos estructurados, desarrollado por Google. Es más pequeño, más rápido y más simple que XML y JSON para la serialización de datos.
Características Principales
- Independiente del lenguaje y la plataforma
- Más pequeño y rápido que XML/JSON
- Tipado fuerte con definición de esquema
- Compatibilidad hacia adelante y hacia atrás
- Generación automática de código
- Codificación binaria eficiente
Cómo Usar Esta Herramienta
- Ingrese su definición de esquema .proto en el editor
- Haga clic en Analizar Esquema para validar y analizar
- Seleccione el tipo de mensaje deseado
- Para codificar: Ingrese datos JSON y haga clic en Codificar
- Para decodificar: Ingrese datos binarios y haga clic en Decodificar
- Use « Decodificación Cruda » para analizar datos binarios sin esquema
Funcionalidades de la Herramienta
Codificar
Convertir datos JSON a formato binario Protocol Buffers. Soporta entrada por formulario para fácil ingreso de datos con validación de tipos.
Decodificar
Convertir datos binarios Protocol Buffers a formato JSON legible. Soporta formatos de entrada Base64, Hex y Hex estilo C.
Decodificación Cruda
Analizar datos binarios protobuf sin esquema. Útil para depuración, ingeniería inversa o análisis de mensajes desconocidos.
Entrada por Formulario
Interfaz de formulario amigable que genera formularios de entrada basados en su esquema. Soporta mensajes anidados, enumeraciones y campos repetidos.
Referencia de Sintaxis Proto
Protocol Buffers usa una sintaxis simple para definir tipos de mensajes:
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 la versión de protobuf (proto2 o proto3)message: Define un tipo de mensaje con camposfield: Cada campo tiene un tipo, nombre y número únicoenum: Define tipos de enumeraciónrepeated: Marca un campo como repetido (array/lista)optional: Marca un campo como opcional (proto3)
Tipos Escalares
Protocol Buffers soporta varios tipos escalares:
| Tipo | Descripción | Defecto |
|---|---|---|
| int32, int64 | Enteros con signo (codificación de longitud variable) | 0 |
| uint32, uint64 | Enteros sin signo | 0 |
| sint32, sint64 | Enteros con signo con codificación ZigZag (eficiente para negativos) | 0 |
| fixed32, fixed64 | Enteros sin signo de ancho fijo (4 u 8 bytes) | 0 |
| sfixed32, sfixed64 | Enteros con signo de ancho fijo (4 u 8 bytes) | 0 |
| float, double | Números de punto flotante (32 o 64 bits) | 0.0 |
| bool | Valores booleanos (verdadero/falso) | false |
| string | Cadenas de texto codificadas en UTF-8 | "" |
| bytes | Datos binarios arbitrarios | empty |
Tipos de Cable
Protobuf usa tipos de cable para determinar cómo leer valores de datos binarios:
| Tipo de Cable | 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 |
Mejores Prácticas
- Use sintaxis proto3 para nuevos proyectos - más simple y ampliamente soportado
- Mantenga los números de campo estables - nunca reutilice o cambie números de campos existentes
- Use nombres de campo significativos que describan claramente los datos
- Reserve los números de campo 1-15 para campos frecuentemente usados (usan 1 byte)
- Use la palabra clave 'repeated' para arrays/listas de valores
- Defina enumeraciones para campos con un conjunto fijo de valores posibles
Preguntas Frecuentes
¿Qué es Protocol Buffers (Protobuf)?
Protocol Buffers es un mecanismo extensible, neutral en cuanto a lenguaje y plataforma, para serializar datos estructurados. Es similar a JSON, pero más pequeño, más rápido y genera enlaces de lenguaje nativos. Se utiliza ampliamente en microservicios gRPC.
¿Cómo uso esta herramienta Protobuf online?
Primero, pegue su definición de esquema `.proto` en el editor (o cargue un ejemplo). Haga clic en 'Analizar Esquema' y seleccione un tipo de mensaje. Luego puede alternar entre los modos 'Codificar' (JSON → Binario) y 'Decodificar' (Binario → JSON) para procesar sus datos.
¿Qué es la 'Decodificación en Bruto' (Raw Decode)?
La decodificación en bruto le permite inspeccionar un mensaje Protobuf binario incluso si no tiene el archivo `.proto`. Analiza la estructura binaria y muestra los números de campo, tipos de cable y valores, lo cual es muy útil para depurar o realizar ingeniería inversa de paquetes desconocidos.
¿Están seguros mis datos?
Sí. Esta herramienta se ejecuta 100% en su navegador usando JavaScript (protobuf.js). Sus esquemas, datos JSON y datos binarios nunca se envían a nuestros servidores, asegurando la privacidad de su información confidencial.
Casos de Uso Comunes
- Comunicación entre servicios en microservicios (gRPC)
- Almacenamiento de datos y caché
- Archivos de configuración
- Protocolos de red y API
Referencias
Herramientas Relacionadas
Formateador JSON
Formatee y valide datos JSON para mejorar la legibilidad y depuración
Generador SQL DDL desde Esquema
Convertir datos CSV/JSON a instrucciones CREATE TABLE SQL DDL, soporte MySQL, PostgreSQL con inferencia automática de tipos
Convertidor JSON YAML
Conversión bidireccional entre JSON y YAML con sangría personalizada y estilos flujo/bloque
Codificador/Decodificador Base64
Codifique y decodifique rápidamente cadenas Base64, compatible con conversión de texto y archivos
Formateador XML
Formatear y validar datos XML con resaltado de sintaxis
Convertidor de Base
Convertir entre sistemas binario, octal, decimal y hexadecimal con soporte de bases personalizadas (2-36)