Inspecter Protobuf et les schémas locaux
Protobuf types0/1/2/3/4/5 avec positions et octets exacts ; sans schéma, aucun nom/texte deviné.
- Fonctionne dans votre navigateur
- Aucun envoi
- Vérifiez avant de télécharger
Les fichiers et les schémas restent dans cet onglet et dans un traitement local. Rien n’est envoyé ni enregistré automatiquement. Effacer ou fermer fait perdre vos saisies ; gardez vos originaux et enregistrez les résultats voulus.
Protobuf types0/1/2/3/4/5 avec positions et octets exacts ; sans schéma, aucun nom/texte deviné. Grammaire locale proto2/proto3, imports locaux, scalaires/enums/messages/groupes, répétitions empaquetées, maps et oneof. Optionnels absents, obligatoires exigés. Fragments de message fusionnés ; dernier scalaire et dernier membre oneof actif. Maps gardent les doublons pour inspection, sans JSON canonique. Editions/extensions refusées. Aucun import distant, constructeur/codec généré, eval ou exécution. Entiers en texte décimal, octets hex ; aucune certification de sémantique applicative. Enregistrez rapports et original ; schemas.json conserve les schémas locaux. Les fragments d’un message dans une valeur de map fusionnent ; les entrées restent séparées et les scalaires utilisent la dernière occurrence.
Fichier ≤ 16 Mio ; Protobuf ≤ 1 Mio ; chaque schéma ≤ 256 Kio, total ≤ 1 Mio. Profondeur 64, 20 000 nœuds de métadonnées ou de fil, 100 000 valeurs physiques ou conservées ; budget de décodage 32 Mio ; sortie générée 8 Mio en plus de l’original. Aperçu de 200 lignes ; export de 10 000 lignes. Le traitement s’arrête après 5 secondes. Les 64 Mio de mémoire linéaire de SQLite ne représentent pas toute la mémoire du navigateur.
Méthode et limites
Profil pris en charge
Protobuf types0/1/2/3/4/5 avec positions et octets exacts ; sans schéma, aucun nom/texte deviné. Grammaire locale proto2/proto3, imports locaux, scalaires/enums/messages/groupes, répétitions empaquetées, maps et oneof. Optionnels absents, obligatoires exigés. Fragments de message fusionnés ; dernier scalaire et dernier membre oneof actif. Maps gardent les doublons pour inspection, sans JSON canonique. Editions/extensions refusées. Aucun import distant, constructeur/codec généré, eval ou exécution. Entiers en texte décimal, octets hex ; aucune certification de sémantique applicative. Enregistrez rapports et original ; schemas.json conserve les schémas locaux. Les fragments d’un message dans une valeur de map fusionnent ; les entrées restent séparées et les scalaires utilisent la dernière occurrence.
Limites de ressources
Fichier ≤ 16 Mio ; Protobuf ≤ 1 Mio ; chaque schéma ≤ 256 Kio, total ≤ 1 Mio. Profondeur 64, 20 000 nœuds de métadonnées ou de fil, 100 000 valeurs physiques ou conservées ; budget de décodage 32 Mio ; sortie générée 8 Mio en plus de l’original. Aperçu de 200 lignes ; export de 10 000 lignes. Le traitement s’arrête après 5 secondes. Les 64 Mio de mémoire linéaire de SQLite ne représentent pas toute la mémoire du navigateur.
Les fichiers et les schémas restent dans cet onglet et dans un traitement local. Rien n’est envoyé ni enregistré automatiquement. Effacer ou fermer fait perdre vos saisies ; gardez vos originaux et enregistrez les résultats voulus.
Comment inspecter
- Fichier binaire local
Chargez un message binaire. Le mode wire n’a pas besoin de schéma ; le mode schéma demande des fichiers .proto locaux, le nom du fichier principal et un type de message explicite. Chargez l’exemple pour partir de sample.proto et du message Sample.
- Schéma et métadonnées
Les octets de l’exemple commencent par 08 96 01, suivis d’un champ délimité par sa longueur. Avec Sample {int64 id=1; string name=2;}, ils donnent id=150 et name=Café. Le mode wire indique les numéros de champ, les plages d’octets et la charge brute au lieu d’inventer des noms.
- Vérifier et enregistrer les exports
Comparez les champs décodés aux décalages wire et au nombre de champs inconnus. Enregistrez report.json, schemas.json s’il a été fourni, et original.pb. Les entiers sont des chaînes décimales ; les octets sont en hexadécimal, sans deviner un texte UTF-8.
Méthode et limites
Pourquoi les rapports wire et schéma diffèrent-ils ?
Le format wire seul ne permet pas de savoir si une valeur délimitée par sa longueur est du texte, des octets ou un sous-message : c’est le schéma choisi qui l’indique. Les champs facultatifs manquants restent absents, les champs répétés conservent chaque occurrence et un oneof retient son dernier membre actif. Le rapport n’est ni du JSON Protobuf canonique ni une validation sémantique propre à l’application.
Pourquoi ce fichier ou cette sélection ne peut-il pas être lu ?
Indiquez le nom de message complet exact et fournissez les imports locaux. Les varints tronqués, les types wire incorrects, les champs obligatoires manquants et l’absence de schéma sont des erreurs ; ne décodez pas une enveloppe applicative encadrée ou compressée comme s’il s’agissait d’un message brut.
Qu’est-ce que cet inspecteur ne fait volontairement pas ?
Inspection locale de proto2 et proto3 ; les Editions et les extensions ne sont pas prises en charge. Jusqu’à 16 fichiers de schéma locaux, 1 MiB au total, et 1 MiB pour le message. Aucun import distant, aucun code applicatif généré ni exécution ; les entrées map en double restent consultables.