Decodificatore protobuf
Protobuf Decoder
Decodifica un payload protobuf senza il file .proto, deducendo numeri di campo, tipi di wire e annidamento.
Decodifica un payload protobuf senza il file `.proto`. Legge il formato di trasmissione — numeri di campo, tipi di wire, annidamento — e mostra affiancate tutte le letture valide di ogni valore, perché senza lo schema più di una ce n’è davvero.
Payload
Trascina qui un payload binario
Decodificato in questa scheda. Non viene caricato nulla.
Campi
Campi di primo livello
3
Dimensione totale
17 byte
- #1VARINT@0, 3 Buint 150 · zigzag 75
- #2LEN@3, 9 B"testing"
- #3LEN@12, 5 Bmessaggio (1 campo)
- #1VARINT@0, 3 Buint 150 · zigzag 75
Come JSON (numeri di campo al posto dei nomi)
.proto non ci sono nomi di campo e uno stesso payload può avere più letture valide: un varint viene mostrato insieme come senza segno, con segno e zigzag, e un campo con lunghezza come messaggio, testo o byte. L’annidamento mostrato è la lettura in cui ogni byte torna esatto; le alternative sono stampate accanto, non nascoste.Come si usa
Incollare i byte o trascinare il file
Esadecimale con o senza spazi, oppure Base64. In alternativa si può trascinare un file binario fino a 32 MB.
Leggere l’elenco dei campi
Ogni riga dà il numero di campo, il tipo di wire, l’offset in byte e la lunghezza, e le letture. I messaggi annidati sono rientrati sotto il loro genitore.
Prendere la proiezione JSON
Lo stesso albero in JSON, con i numeri di campo al posto dei nomi. Utile per fare il diff di due payload, o per incollarlo in una issue.
Domande frequenti
Perché non ci sono i nomi dei campi?
Perché protobuf non li mette sul filo. Il messaggio codificato porta soltanto i *numeri* di campo: i nomi vivono nel file `.proto`, che è esattamente ciò che rende compatto il formato ed esattamente il motivo per cui una decodifica senza schema può mostrare solo numeri.
Perché un valore è mostrato in tre modi diversi?
Perché un varint sul filo è solo bit: gli stessi byte sono un `uint64` valido, un `int64` valido e un `sint64` zigzag valido, e solo lo schema dice quale sia. Mostrarne uno e nascondere gli altri sarebbe una supposizione presentata come un fatto.
Come decide che un campo è un messaggio annidato?
Un campo delimitato in lunghezza potrebbe essere un messaggio, una stringa o byte grezzi. Viene mostrato come messaggio quando il suo contenuto si analizza per intero — ogni byte consumato, niente avanzi — e la lettura come stringa viene stampata accanto quando i byte sono anche testo stampabile. Ogni tanto una stringa corta si analizza come messaggio per coincidenza; ci sono entrambe le letture, così si può distinguere.
Riesce a decodificare traffico gRPC?
Il corpo del messaggio sì, una volta tolta dall’inizio l’intestazione di frame gRPC da cinque byte — un flag di compressione e una lunghezza big-endian da quattro byte. Dandogli i byte che seguono, decodifica normalmente.
Può ricevere da
Visualizzatore esadecimale
Hex Viewer
Mostra qualsiasi file come dump di offset, esadecimale e ASCII, riconosce i byte magici ed evidenzia il risultato di una ricerca.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Formattatore e validatore YAML
YAML Formatter & Validator
Riporta il YAML a un’indentazione coerente, lo valida e segnala gli errori di tabulazione e di ancora che rompono i parser.
Formattatore e validatore TOML
TOML Formatter & Validator
Formatta e valida il TOML, uniformando l’ordine delle tabelle e lo stile delle tabelle in linea.
Dopo
Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.
Codificatore e decodificatore Base64
Base64 Encoder & Decoder
Codifica e decodifica in Base64 e Base64URL testo o file, trattando correttamente l’UTF-8.
Visualizzatore esadecimale
Hex Viewer
Mostra qualsiasi file come dump di offset, esadecimale e ASCII, riconosce i byte magici ed evidenzia il risultato di una ricerca.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Conversione JSON ⇄ CSV
JSON ⇄ CSV
Appiattisce il JSON annidato in colonne o ricostruisce gli oggetti da una tabella, con i nomi di colonna a percorso puntato.
Confronto fra due JSON
JSON Diff
Confronta due documenti JSON per struttura, ignorando l’ordine delle chiavi e riportando i percorsi aggiunti, tolti e cambiati.
Da JSON a TypeScript
JSON to TypeScript
Deduce interfacce o tipi TypeScript da un esempio JSON, unendo i campi facoltativi e le unioni.