Protobuf-Decoder
Protobuf Decoder
Dekodiert eine Protobuf-Nutzlast ohne die .proto-Datei und leitet Feldnummern, Wire-Typen und Verschachtelung ab.
Dekodiert eine Protobuf-Nutzlast ohne die `.proto`-Datei. Es liest das Wire-Format – Feldnummern, Wire-Typen, Verschachtelung – und zeigt jede gültige Lesart jedes Werts nebeneinander, denn ohne das Schema gibt es tatsächlich mehr als eine.
Nutzlast
Eine binäre Nutzlast ablegen
Wird in diesem Tab dekodiert. Es wird nichts hochgeladen.
Felder
Felder der obersten Ebene
3
Gesamtgröße
17 Byte
- #1VARINT@0, 3 Buint 150 · zigzag 75
- #2LEN@3, 9 B"testing"
- #3LEN@12, 5 BNachricht (1 Feld)
- #1VARINT@0, 3 Buint 150 · zigzag 75
Als JSON (Feldnummern statt Namen)
.proto gibt es keine Feldnamen, und eine Nutzlast kann mehrere gültige Lesarten haben: ein Varint wird zugleich vorzeichenlos, vorzeichenbehaftet und als Zigzag gezeigt, ein längenbegrenztes Feld als Nachricht, Text oder Bytes. Die gezeigte Verschachtelung ist die Lesart, in der jedes Byte genau aufgeht; die Alternativen stehen daneben, sie werden nicht versteckt.So funktioniert es
Fügen Sie die Bytes ein oder legen Sie die Datei ab
Hex mit oder ohne Leerzeichen, oder Base64. Eine Binärdatei bis 32 MB kann stattdessen abgelegt werden.
Lesen Sie die Feldliste
Jede Zeile nennt Feldnummer, Wire-Typ, Byte-Offset und Länge sowie die Lesarten. Verschachtelte Nachrichten sind unter ihrem Elternteil eingerückt.
Nehmen Sie die JSON-Projektion
Derselbe Baum als JSON, mit Feldnummern anstelle von Namen. Nützlich, um zwei Nutzlasten zu vergleichen oder um es in ein Issue einzufügen.
Häufige Fragen
Warum gibt es keine Feldnamen?
Weil Protobuf sie nicht auf die Leitung legt. Die kodierte Nachricht trägt nur Feld*nummern* – die Namen leben in der `.proto`-Datei, was genau das ist, was das Format kompakt macht, und genau der Grund, warum ein schemaloses Dekodieren Ihnen nur Nummern zeigen kann.
Warum wird ein Wert auf drei verschiedene Arten angezeigt?
Weil ein Varint auf der Leitung nur Bits ist: Dieselben Bytes sind ein gültiges `uint64`, ein gültiges `int64` und ein gültiges Zigzag-`sint64`, und nur das Schema sagt, welches. Eines zu zeigen und die anderen zu verbergen wäre eine Vermutung, die als Tatsache präsentiert wird.
Wie entscheidet es, dass ein Feld eine verschachtelte Nachricht ist?
Ein längenbegrenztes Feld könnte eine Nachricht, ein String oder rohe Bytes sein. Es wird als Nachricht gezeigt, wenn sein Inhalt vollständig parst – jedes Byte verbraucht, keine Reste –, und die String-Lesart wird daneben ausgegeben, wenn die Bytes auch druckbarer Text sind. Gelegentlich parst ein kurzer String zufällig als Nachricht; beide Lesarten sind da, damit Sie es erkennen können.
Kann es gRPC-Verkehr dekodieren?
Den Nachrichten-Body ja, sobald Sie den fünf Byte langen gRPC-Frame-Header – ein Kompressionsflag und eine Vier-Byte-Länge in Big-Endian – vorne entfernt haben. Geben Sie die Bytes danach ein, und es dekodiert normal.
Eingabe aus
Hex-Viewer
Hex Viewer
Zeigt jede Datei als Offset/Hex/ASCII-Dump, erkennt die Magic Bytes und hebt einen Suchtreffer hervor.
JSON formatieren und validieren
JSON Formatter & Validator
Formatiert, minimiert und validiert JSON und zeigt bei Syntaxfehlern die genaue Zeile und Spalte.
YAML formatieren und validieren
YAML Formatter & Validator
Rückt YAML einheitlich ein, validiert es und markiert die Tab- und Anker-Fehler, an denen Parser scheitern.
TOML formatieren und validieren
TOML Formatter & Validator
Formatiert und validiert TOML und normalisiert die Tabellenreihenfolge sowie den Stil von Inline-Tabellen.
Danach
Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.
Base64 kodieren und dekodieren
Base64 Encoder & Decoder
Kodiert und dekodiert Base64 und Base64URL für Text oder Dateien und behandelt UTF-8 korrekt.
Hex-Viewer
Hex Viewer
Zeigt jede Datei als Offset/Hex/ASCII-Dump, erkennt die Magic Bytes und hebt einen Suchtreffer hervor.
JSON formatieren und validieren
JSON Formatter & Validator
Formatiert, minimiert und validiert JSON und zeigt bei Syntaxfehlern die genaue Zeile und Spalte.
JSON ⇄ CSV umwandeln
JSON ⇄ CSV
Flacht verschachteltes JSON zu Spalten ab oder baut Objekte aus einer Tabelle wieder auf, mit Punktpfad-Regel für die Spaltennamen.
JSON vergleichen
JSON Diff
Vergleicht zwei JSON-Dokumente strukturell, ignoriert die Schlüsselreihenfolge und meldet hinzugefügte, entfernte und geänderte Pfade.
JSON in TypeScript
JSON to TypeScript
Leitet aus einem JSON-Beispiel TypeScript-Interfaces oder -Typen ab und führt optionale und Union-Felder zusammen.