Codec CBOR
Encoder et décoder le format de données binaires CBOR
Collez les données CBOR provenant de captures réseau, d'appareils IoT ou de réponses API
Exemples de données
Résultat décodé
Entrez les données CBOR et cliquez sur Décoder pour voir les résultats
Visualiseur d'octets
Entrez des données JSON valides pour encoder en CBOR
Encodage de la longueur du conteneur
- Compact: Utilise le minimum d'octets (fixmap/fixarray pour ≤23 éléments)
- Explicit 16-bit: Utilise toujours une longueur de 2 octets (préfixe 0xB9/0x99)
- Explicit 32-bit: Utilise toujours une longueur de 4 octets (préfixe 0xBA/0x9A)
- Indefinite: Utilise une longueur indéfinie avec code de fin (0xBF...0xFF)
JSON Examples
Résultat encodé
Entrez les données JSON et cliquez sur Encoder pour générer le CBOR
Visualiseur d'octets
Statistiques d'encodage
Référence des types de données CBOR
| Type majeur | Nom du type | Octets d'en-tête | Description |
|---|---|---|---|
| 0 | Entier non signé | 0x00-0x1B | Entiers non négatifs de 0 à 2^64-1 |
| 1 | Entier négatif | 0x20-0x3B | Entiers négatifs de -1 à -2^64 |
| 2 | Chaîne d'octets | 0x40-0x5B | Données binaires brutes de longueur arbitraire |
| 3 | Chaîne de texte | 0x60-0x7B | Chaînes de texte encodées en UTF-8 |
| 4 | Tableau | 0x80-0x9B | Collection ordonnée d'éléments de données |
| 5 | Map | 0xA0-0xBB | Paires clé-valeur (objet) |
| 6 | Tag | 0xC0-0xDB | Tag sémantique pour les types étendus |
| 7 | Simple/Flottant | 0xE0-0xFB | Booléen, null, undefined et nombres à virgule flottante |
Documentation du protocole CBOR
Qu'est-ce que CBOR
CBOR (Concise Binary Object Representation) est un format de sérialisation de données binaires défini dans RFC 8949. Conçu comme une alternative compacte à JSON, CBOR encode les données structurées sous forme binaire efficace tout en maintenant la compatibilité avec le modèle de données JSON. Le format est auto-descriptif, ce qui signifie que les décodeurs peuvent analyser les données sans définitions de schéma externes. CBOR a été spécifiquement conçu pour les environnements contraints comme les appareils IoT et les systèmes embarqués où la bande passante et la puissance de traitement sont des ressources limitées.
Structure d'encodage binaire
Chaque élément de données CBOR commence par un seul octet contenant deux champs : le type majeur (3 bits) et l'information additionnelle (5 bits). Le type majeur détermine la catégorie de données (entier, chaîne, tableau, etc.), tandis que l'information additionnelle indique la longueur de l'argument ou contient directement les petites valeurs. Cette conception d'en-tête compacte signifie que les valeurs simples comme les petits entiers ne nécessitent qu'un seul octet.
| Info additionnelle | Signification |
|---|---|
| 0-23 | Valeur encodée directement (0-23) |
| 24 | 1 octet non signé suit |
| 25 | 2 octets non signés suivent (big-endian) |
| 26 | 4 octets non signés suivent (big-endian) |
| 27 | 8 octets non signés suivent (big-endian) |
| 31 | Longueur indéfinie (pour chaînes, tableaux, maps) |
Options d'encodage de longueur du conteneur
CBOR offre une flexibilité dans l'encodage des longueurs de conteneurs (tableaux et maps). Bien que tous les encodages valides produisent des données sémantiquement identiques, la représentation binaire diffère. Cet outil propose quatre modes d'encodage pour répondre aux différentes exigences système.
Exemple d'encodage : {"name":"Alice","age":30}
Le même objet JSON peut être encodé de plusieurs façons valides :
| Mode | Octets d'en-tête | Description |
|---|---|---|
| Compact | A2 ... | 0xA2 = fixmap(2), encodage minimal |
| Explicit 16-bit | B9 00 02 ... | 0xB9 = map16, longueur de 2 octets suit |
| Explicit 32-bit | BA 00 00 00 02 ... | 0xBA = map32, longueur de 4 octets suit |
| Indefinite | BF ... FF | 0xBF = map indéfini, se termine par 0xFF |
Les quatre encodages décodent vers un JSON identique. Choisissez compact pour l'efficacité de taille, longueurs explicites pour la compatibilité protocole, ou indéfini pour les scénarios de streaming.
Comparaison CBOR vs JSON
Les deux formats représentent le même modèle de données logique mais servent des objectifs différents. CBOR privilégie l'encodage compact et l'efficacité du traitement, tandis que JSON met l'accent sur la lisibilité humaine et l'interopérabilité universelle basée sur le texte.
- Taille encodée plus petite (30-50% typiquement)
- Support natif des données binaires
- Analyse et encodage plus rapides
- Tags sémantiques intégrés pour dates, URI, etc.
- Lisible et modifiable par l'homme
- Support universel navigateur/langage
- Débogage et journalisation plus faciles
Applications courantes
- Communication des appareils IoT et transmission de données de capteurs
- Protocoles d'authentification WebAuthn/FIDO2
- Sécurité COSE (signature et chiffrement d'objets CBOR)
- Messagerie CoAP (protocole d'application contrainte)
- Configuration et stockage de données des systèmes embarqués
Tags sémantiques
Les tags CBOR fournissent une signification sémantique aux éléments de données. Les tags sont des enveloppes optionnelles qui indiquent comment la valeur encapsulée doit être interprétée, permettant des extensions de type au-delà des types de données de base.
| Numéro de tag | Signification sémantique |
|---|---|
| 0 | Chaîne date/heure standard (RFC 3339) |
| 1 | Date/heure basée sur l'époque (timestamp Unix) |
| 2 | Grand nombre positif |
| 3 | Grand nombre négatif |
| 32 | Référence URI |
| 55799 | CBOR auto-descriptif (nombre magique) |
Outils Connexes
Outil Protocol Buffers
Encodeur/décodeur Protocol Buffers en ligne. Analyser les schémas .proto, encoder JSON en binaire, ou décoder binaire en JSON
Formateur JSON
Formatez et validez les données JSON pour une meilleure lisibilité et débogage
Encodeur/Décodeur Base64
Encodez et décodez rapidement des chaînes Base64, prenant en charge la conversion de texte et de fichiers
Codec MQTT
Encoder et décoder les paquets du protocole MQTT avec analyse détaillée des champs, visualiseur hex et constructeur de paquets