Códec MessagePack
Codifica y decodifica el formato de serialización binaria MessagePack
Pegue datos MessagePack de respuestas API, archivos de registro o capturas de red
Clic para insertar datos de ejemplo
Resultado decodificado
Ingrese datos MessagePack y haga clic en Decodificar para ver resultados
Visor de bytes
Ingrese datos JSON válidos para codificar como MessagePack
Codificación de longitud del contenedor
- Compact: Usa bytes mínimos (fixarray/fixmap para ≤15 elementos)
- Explicit 16-bit: Siempre usa longitud de 2 bytes (formato array16/map16)
- Explicit 32-bit: Siempre usa longitud de 4 bytes (formato array32/map32)
Clic para insertar ejemplo JSON
Resultado codificado
Ingrese datos JSON y haga clic en Codificar para generar MessagePack
Visor de bytes
Estadísticas de codificación
Referencia de tipos de datos MessagePack
| Nombre del tipo | Rango de bytes de formato | Descripción |
|---|---|---|
| FixInt positivo | 0x00-0x7F | Enteros de 0 a 127 (un byte) |
| FixInt negativo | 0xE0-0xFF | Enteros de -32 a -1 (un byte) |
| FixMap | 0x80-0x8F | Maps con 0-15 pares clave-valor |
| FixArray | 0x90-0x9F | Arrays con 0-15 elementos |
| FixStr | 0xA0-0xBF | Cadenas de 0-31 bytes de longitud |
| Nil | 0xC0 | Representa valor null/nil |
| Booleano | 0xC2-0xC3 | True (0xc3) o False (0xc2) |
| Binario | 0xC4-0xC6 | Datos binarios sin procesar (bin8/bin16/bin32) |
| Extensión | 0xC7-0xC9, 0xD4-0xD8 | Tipos definidos por aplicación con código de tipo |
| Flotante | 0xCA-0xCB | Números de punto flotante de 32 o 64 bits |
| Entero sin signo | 0xCC-0xCF | Enteros sin signo de 8/16/32/64 bits |
| Entero con signo | 0xD0-0xD3 | Enteros con signo de 8/16/32/64 bits |
| Cadena | 0xD9-0xDB | Cadenas UTF-8 (str8/str16/str32) |
| Array | 0xDC-0xDD | Arrays con longitud de 16 o 32 bits |
| Map | 0xDE-0xDF | Maps con longitud de 16 o 32 bits |
Documentación del protocolo MessagePack
Qué es MessagePack
MessagePack es un formato de serialización binaria diseñado para el intercambio eficiente de datos. Creado por Sadayuki Furuhashi en 2008, empaqueta estructuras de datos similares a JSON en una representación binaria compacta que típicamente es 50% más pequeña que JSON mientras es más rápida de analizar. El formato es ampliamente adoptado en Redis, Fluentd y numerosos sistemas de comunicación en tiempo real donde el rendimiento importa.
Estructura de codificación binaria
MessagePack usa un esquema de codificación tipo-longitud-valor. El primer byte (byte de formato) determina el tipo de datos y puede contener el valor mismo para enteros pequeños y cadenas cortas. Valores más grandes usan bytes adicionales para longitud y carga útil. Este diseño permite a MessagePack codificar valores pequeños extremadamente eficiente mientras soporta estructuras de datos grandes.
| Byte de formato | Significado |
|---|---|
| 0x00-0x7F | Fixint positivo (0-127, valor en byte) |
| 0x80-0x8F | Fixmap (0-15 pares, cuenta en 4 bits inferiores) |
| 0x90-0x9F | Fixarray (0-15 elementos, cuenta en 4 bits inferiores) |
| 0xA0-0xBF | Fixstr (0-31 bytes, longitud en 5 bits inferiores) |
| 0xC0-0xDF | Tipos Nil, booleano, bin, ext, float, int |
| 0xE0-0xFF | Fixint negativo (-32 a -1) |
Comparación MessagePack vs JSON
Ambos formatos representan el mismo modelo de datos pero optimizan para diferentes escenarios. MessagePack prioriza tamaño compacto y velocidad de análisis, haciéndolo ideal para sistemas de alto rendimiento. JSON prioriza legibilidad humana y compatibilidad universal en todas las plataformas.
- 30-50% más pequeño que JSON
- Soporte nativo de datos binarios
- Serialización y análisis más rápidos
- Seguro en tipos con tipos enteros distintos
- Legible y editable por humanos
- Soporte universal de navegador y lenguaje
- Depuración y registro más fáciles
Aplicaciones comunes
- Serialización de datos Redis y caché
- Protocolos de comunicación en tiempo real (juegos, chat)
- Agregación y reenvío de logs Fluentd
- Frameworks RPC (MessagePack-RPC)
- Aplicaciones móviles y embebidas con restricciones de ancho de banda
Tipos de extensión
MessagePack soporta tipos de extensión definidos por aplicación. Cada extensión tiene un código de tipo (entero de -128 a 127) y carga útil binaria. Extensiones estándar comunes incluyen timestamp (tipo -1), que almacena segundos y nanosegundos para representación precisa del tiempo.
| Código de tipo | Uso común |
|---|---|
| -1 | Timestamp (oficial) |
| 0-127 | Tipos definidos por aplicación |
Herramientas Relacionadas
Codec CBOR
Codificador/decodificador CBOR binario con conversión JSON, visor hex y tags semánticos para desarrollo IoT
Formateador JSON
Formatee y valide datos JSON para mejorar la legibilidad y depuración
Codificador/Decodificador Base64
Codifique y decodifique rápidamente cadenas Base64, compatible con conversión de texto y archivos
Herramienta Protocol Buffers
Codificador/decodificador Protocol Buffers en línea. Analizar esquemas .proto, codificar JSON a binario, o decodificar binario a JSON