Codec MessagePack
Encoder et décoder le format de sérialisation binaire MessagePack
Collez les données MessagePack provenant de réponses API, fichiers journaux ou captures réseau
Cliquez pour insérer des données d'exemple
Résultat décodé
Entrez des données MessagePack et cliquez sur Décoder pour voir les résultats
Visualiseur d'octets
Entrez des données JSON valides pour encoder en MessagePack
Encodage de la longueur du conteneur
- Compact: Utilise le minimum d'octets (fixarray/fixmap pour ≤15 éléments)
- Explicit 16-bit: Utilise toujours une longueur de 2 octets (format array16/map16)
- Explicit 32-bit: Utilise toujours une longueur de 4 octets (format array32/map32)
Cliquez pour insérer un exemple JSON
Résultat encodé
Entrez des données JSON et cliquez sur Encoder pour générer MessagePack
Visualiseur d'octets
Statistiques d'encodage
Référence des types de données MessagePack
| Nom du type | Plage d'octets de format | Description |
|---|---|---|
| FixInt positif | 0x00-0x7F | Entiers de 0 à 127 (un octet) |
| FixInt négatif | 0xE0-0xFF | Entiers de -32 à -1 (un octet) |
| FixMap | 0x80-0x8F | Maps avec 0-15 paires clé-valeur |
| FixArray | 0x90-0x9F | Tableaux avec 0-15 éléments |
| FixStr | 0xA0-0xBF | Chaînes de 0-31 octets |
| Nil | 0xC0 | Représente la valeur null/nil |
| Booléen | 0xC2-0xC3 | True (0xc3) ou False (0xc2) |
| Binaire | 0xC4-0xC6 | Données binaires brutes (bin8/bin16/bin32) |
| Extension | 0xC7-0xC9, 0xD4-0xD8 | Types définis par l'application avec code de type |
| Flottant | 0xCA-0xCB | Nombres à virgule flottante 32 ou 64 bits |
| Entier non signé | 0xCC-0xCF | Entiers non signés 8/16/32/64 bits |
| Entier signé | 0xD0-0xD3 | Entiers signés 8/16/32/64 bits |
| Chaîne | 0xD9-0xDB | Chaînes UTF-8 (str8/str16/str32) |
| Tableau | 0xDC-0xDD | Tableaux avec longueur 16 ou 32 bits |
| Map | 0xDE-0xDF | Maps avec longueur 16 ou 32 bits |
Documentation du protocole MessagePack
Qu'est-ce que MessagePack
MessagePack est un format de sérialisation binaire conçu pour l'échange de données efficace. Créé par Sadayuki Furuhashi en 2008, il compresse les structures de données similaires à JSON en une représentation binaire compacte, généralement 50% plus petite que JSON tout en étant plus rapide à analyser. Le format est largement adopté dans Redis, Fluentd et de nombreux systèmes de communication temps réel où la performance est importante.
Structure d'encodage binaire
MessagePack utilise un schéma d'encodage type-longueur-valeur. Le premier octet (octet de format) détermine le type de données et peut contenir la valeur elle-même pour les petits entiers et les courtes chaînes. Les valeurs plus grandes utilisent des octets supplémentaires pour la longueur et la charge utile. Cette conception permet à MessagePack d'encoder les petites valeurs extrêmement efficacement tout en supportant les grandes structures de données.
| Octet de format | Signification |
|---|---|
| 0x00-0x7F | Fixint positif (0-127, valeur dans l'octet) |
| 0x80-0x8F | Fixmap (0-15 paires, compte dans les 4 bits inférieurs) |
| 0x90-0x9F | Fixarray (0-15 éléments, compte dans les 4 bits inférieurs) |
| 0xA0-0xBF | Fixstr (0-31 octets, longueur dans les 5 bits inférieurs) |
| 0xC0-0xDF | Types Nil, booléen, bin, ext, float, int |
| 0xE0-0xFF | Fixint négatif (-32 à -1) |
Comparaison MessagePack vs JSON
Les deux formats représentent le même modèle de données mais optimisent pour différents scénarios. MessagePack privilégie la taille compacte et la vitesse d'analyse, ce qui le rend idéal pour les systèmes à haut débit. JSON privilégie la lisibilité humaine et la compatibilité universelle sur toutes les plateformes.
- 30-50% plus petit que JSON
- Support natif des données binaires
- Sérialisation et analyse plus rapides
- Typage sûr avec types entiers distincts
- Lisible et modifiable par l'homme
- Support universel navigateur et langage
- Débogage et journalisation plus faciles
Applications courantes
- Sérialisation de données Redis et mise en cache
- Protocoles de communication temps réel (jeux, chat)
- Agrégation et transfert de logs Fluentd
- Frameworks RPC (MessagePack-RPC)
- Applications mobiles et embarquées avec contraintes de bande passante
Types d'extension
MessagePack supporte les types d'extension définis par l'application. Chaque extension a un code de type (entier de -128 à 127) et une charge utile binaire. Les extensions standard courantes incluent l'horodatage (type -1), qui stocke les secondes et nanosecondes pour une représentation précise du temps.
| Code de type | Usage courant |
|---|---|
| -1 | Horodatage (officiel) |
| 0-127 | Types définis par l'application |
Outils Connexes
Codec CBOR
Encodeur/décodeur CBOR binaire avec conversion JSON, visualiseur hex et tags sémantiques pour le développement IoT
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
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