Choisir le bon encodage
Hex est sélectionné au départ et accepte espaces, deux-points et préfixes 0x. Passez à Base64 si la capture est encodée ainsi : une courte chaîne peut convenir aux deux formats.
Lire les octets du protocole
Inspectez d’abord les octets bruts ; ajoutez un .proto autonome seulement pour les noms et types déclarés.
Octets et schéma sont traités dans ce navigateur, sans envoi.
Saisissez un message wire ou un varint.
Un décodeur Protobuf devient utile quand un journal contient un message binaire sans définition lisible. Même sans fichier .proto, les numéros de champs, types wire et limites de chaque valeur restent visibles.
Le format filaire Protobuf ne dit pas si un bloc de longueur connue est du texte, des bytes, un sous-message ou des valeurs compactées. Les lectures proposées restent des hypothèses tant que le schéma n’a pas tranché.
Chaque lecture garde sa preuve en hex.
Le décodeur Protobuf associe à chaque champ ses offsets début et fin à partir de zéro, son type wire et son hex brut. Une longueur tronquée est signalée à l’octet où elle devient impossible.
Collez un .proto autonome et choisissez le type de message. Le JSON typé complète l’arbre des champs bruts, ce qui permet de vérifier l’origine de chaque valeur nommée.
Hex est sélectionné au départ et accepte espaces, deux-points et préfixes 0x. Passez à Base64 si la capture est encodée ainsi : une courte chaîne peut convenir aux deux formats.
Un varint wire 0 peut désigner un entier signé, non signé, ZigZag, un booléen ou une énumération. Un champ wire 2 peut contenir plusieurs sortes de données. Le .proto fixe le type réel.
Le calcul automatique attend 350 ms. Désactivez-le pour exécuter avec Ctrl/Cmd + Enter. Toute modification bloque aussitôt copie et téléchargement de l’ancien résultat.
Le décodeur Protobuf lit varint, fixed64, données à longueur déterminée et fixed32. Une valeur coupée ou un ancien group déclenche une erreur localisée.
Le mode varint décode uint64 et fait la conversion inverse depuis un entier décimal. Le choix ZigZag donne sint64 ; BigInt évite toute perte de précision de Number.
Un .proto autonome peut nommer les champs et décoder listes et messages imbriqués. Si ce décodage échoue, l’inspection wire brute reste disponible.
L’export normalise uniquement la présentation des octets d’entrée. Il ne réencode pas un message déduit par supposition, ce qui facilite la comparaison octet par octet.
Oui pour la structure : numéros, types wire, offsets et valeurs brutes. Les noms et types déclarés exigent le .proto correspondant.
Les trois bits bas de chaque tag indiquent la forme de stockage. Ils ne suffisent pas à reconnaître tous les types applicatifs.
Choisissez Hex pour des paires de chiffres et Base64 pour une chaîne encodée. Le choix reste manuel afin d’éviter une détection ambiguë.
La même valeur brute peut se lire en entier non signé ou en sint64 ZigZag. Seule la déclaration indique l’interprétation voulue.
Non. Les octets et le schéma facultatif sont traités dans ce navigateur, sans envoi du contenu au serveur.
Une définition devrait être prise en charge ?
Gardez les offsets et l’hex brut du décodeur Protobuf à côté du .proto utilisé : cette comparaison évite de confondre une lecture possible avec le type déclaré.