CoderTools

Codec MessagePack

Encoder et décoder le format de sérialisation binaire MessagePack

🔒 100% Traitement localLes données que vous saisissez sont traitées entièrement dans votre navigateur et ne sont envoyées à aucun serveur.

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

Référence des types de données MessagePack

Nom du type Plage d'octets de format Description
FixInt positif0x00-0x7FEntiers de 0 à 127 (un octet)
FixInt négatif0xE0-0xFFEntiers de -32 à -1 (un octet)
FixMap0x80-0x8FMaps avec 0-15 paires clé-valeur
FixArray0x90-0x9FTableaux avec 0-15 éléments
FixStr0xA0-0xBFChaînes de 0-31 octets
Nil0xC0Représente la valeur null/nil
Booléen0xC2-0xC3True (0xc3) ou False (0xc2)
Binaire0xC4-0xC6Données binaires brutes (bin8/bin16/bin32)
Extension0xC7-0xC9, 0xD4-0xD8Types définis par l'application avec code de type
Flottant0xCA-0xCBNombres à virgule flottante 32 ou 64 bits
Entier non signé0xCC-0xCFEntiers non signés 8/16/32/64 bits
Entier signé0xD0-0xD3Entiers signés 8/16/32/64 bits
Chaîne0xD9-0xDBChaînes UTF-8 (str8/str16/str32)
Tableau0xDC-0xDDTableaux avec longueur 16 ou 32 bits
Map0xDE-0xDFMaps 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-0x7FFixint positif (0-127, valeur dans l'octet)
0x80-0x8FFixmap (0-15 paires, compte dans les 4 bits inférieurs)
0x90-0x9FFixarray (0-15 éléments, compte dans les 4 bits inférieurs)
0xA0-0xBFFixstr (0-31 octets, longueur dans les 5 bits inférieurs)
0xC0-0xDFTypes Nil, booléen, bin, ext, float, int
0xE0-0xFFFixint 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.

Avantages de MessagePack
  • 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
Avantages de JSON
  • 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
-1Horodatage (officiel)
0-127Types définis par l'application

Menu Rapide

Aucun outil récent