Decodificador de Protobuf
Protobuf Decoder
Decodifica una carga protobuf sin el archivo .proto, deduciendo números de campo, tipos de codificación y anidamiento.
Decodifica una carga útil protobuf sin el archivo `.proto`. Lee el formato de cable —números de campo, tipos de cable, anidamiento— y muestra cada lectura válida de cada valor lado a lado, porque sin el esquema hay genuinamente más de una.
Carga útil
Suelta una carga binaria
Se decodifica en esta pestaña. No se sube nada.
Campos
Campos de primer nivel
3
Tamaño total
17 B
- #1VARINT@0, 3 Buint 150 · zigzag 75
- #2LEN@3, 9 B"testing"
- #3LEN@12, 5 Bmensaje (1 campo)
- #1VARINT@0, 3 Buint 150 · zigzag 75
Como JSON (números de campo en lugar de nombres)
.proto no hay nombres de campo y una misma carga útil puede tener varias lecturas válidas: un varint se muestra a la vez como sin signo, con signo y en zigzag, y un campo con longitud como mensaje, texto o bytes. El anidamiento que se ve es la lectura en la que cada byte encaja exactamente; las alternativas se imprimen al lado, no se ocultan.Cómo se usa
Pega los bytes o suelta el archivo
Hexadecimal con o sin espacios, o Base64. Un archivo binario de hasta 32 MB puede soltarse en su lugar.
Lee la lista de campos
Cada fila da el número de campo, el tipo de cable, el desplazamiento y la longitud en bytes, y las lecturas. Los mensajes anidados se indentan bajo su padre.
Llévate la proyección JSON
El mismo árbol como JSON, con números de campo en lugar de nombres. Útil para comparar dos cargas útiles, o para pegarlo en un issue.
Preguntas frecuentes
¿Por qué no hay nombres de campo?
Porque protobuf no los pone en el cable. El mensaje codificado lleva solo *números* de campo: los nombres viven en el archivo `.proto`, que es exactamente lo que hace compacto el formato y exactamente por lo que una decodificación sin esquema solo puede mostrarte números.
¿Por qué un valor se muestra de tres formas distintas?
Porque un varint en el cable son solo bits: los mismos bytes son un `uint64` válido, un `int64` válido y un `sint64` zigzag válido, y solo el esquema dice cuál. Mostrar uno y ocultar los otros sería una suposición presentada como un hecho.
¿Cómo decide que un campo es un mensaje anidado?
Un campo delimitado por longitud podría ser un mensaje, una cadena o bytes en bruto. Se muestra como mensaje cuando su contenido se analiza por completo —cada byte consumido, sin sobras— y la lectura como cadena se imprime al lado cuando los bytes son además texto imprimible. De vez en cuando una cadena corta se analiza como mensaje por coincidencia; ambas lecturas están ahí para que puedas distinguirlo.
¿Puede decodificar tráfico gRPC?
El cuerpo del mensaje, sí, una vez que quitas del principio la cabecera de frame gRPC de cinco bytes: un flag de compresión y una longitud big-endian de cuatro bytes. Dale los bytes a partir de ahí y decodifica con normalidad.
Puede recibir de
Visor hexadecimal
Hex Viewer
Muestra cualquier archivo como volcado de desplazamiento, hexadecimal y ASCII, identifica los bytes mágicos y resalta las coincidencias de búsqueda.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
Formateador y validador de YAML
YAML Formatter & Validator
Reindenta el YAML de forma uniforme, lo valida y señala los tabuladores y las anclas que rompen los analizadores.
Formateador y validador de TOML
TOML Formatter & Validator
Formatea y valida TOML, normalizando el orden de las tablas y el estilo de las tablas en línea.
Después
Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.
Codificador y decodificador Base64
Base64 Encoder & Decoder
Codifica y decodifica Base64 y Base64URL, para texto o archivos, tratando UTF-8 correctamente.
Visor hexadecimal
Hex Viewer
Muestra cualquier archivo como volcado de desplazamiento, hexadecimal y ASCII, identifica los bytes mágicos y resalta las coincidencias de búsqueda.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
JSON a CSV y de vuelta
JSON ⇄ CSV
Aplana JSON anidado en columnas o reconstruye los objetos desde una tabla, con nombres de columna en notación de puntos.
Comparar dos JSON
JSON Diff
Compara dos documentos JSON por estructura, ignorando el orden de las claves e informando de las rutas añadidas, eliminadas y modificadas.
JSON a tipos de TypeScript
JSON to TypeScript
Deduce interfaces o tipos de TypeScript a partir de un JSON de ejemplo, fusionando campos opcionales y uniones.