Codec MessagePack
Codificar e decodificar formato de serialização binária MessagePack
Cole dados MessagePack de respostas de API, arquivos de log ou capturas de rede
Clique para inserir dados de exemplo
Resultado decodificado
Digite dados MessagePack e clique em Decodificar para ver resultados
Visualizador de bytes
Digite dados JSON válidos para codificar como MessagePack
Codificação de comprimento do contêiner
- Compact: Usa bytes mínimos (fixarray/fixmap para ≤15 elementos)
- Explicit 16-bit: Sempre usa comprimento de 2 bytes (formato array16/map16)
- Explicit 32-bit: Sempre usa comprimento de 4 bytes (formato array32/map32)
Clique para inserir exemplo JSON
Resultado codificado
Digite dados JSON e clique em Codificar para gerar MessagePack
Visualizador de bytes
Estatísticas de codificação
Referência de tipos de dados MessagePack
| Nome do tipo | Faixa de bytes de formato | Descrição |
|---|---|---|
| FixInt positivo | 0x00-0x7F | Inteiros de 0 a 127 (um byte) |
| FixInt negativo | 0xE0-0xFF | Inteiros de -32 a -1 (um byte) |
| FixMap | 0x80-0x8F | Maps com 0-15 pares chave-valor |
| FixArray | 0x90-0x9F | Arrays com 0-15 elementos |
| FixStr | 0xA0-0xBF | Strings com 0-31 bytes de comprimento |
| Nil | 0xC0 | Representa valor null/nil |
| Booleano | 0xC2-0xC3 | True (0xc3) ou False (0xc2) |
| Binário | 0xC4-0xC6 | Dados binários brutos (bin8/bin16/bin32) |
| Extensão | 0xC7-0xC9, 0xD4-0xD8 | Tipos definidos pela aplicação com código de tipo |
| Ponto flutuante | 0xCA-0xCB | Números de ponto flutuante de 32 ou 64 bits |
| Inteiro sem sinal | 0xCC-0xCF | Inteiros sem sinal de 8/16/32/64 bits |
| Inteiro com sinal | 0xD0-0xD3 | Inteiros com sinal de 8/16/32/64 bits |
| String | 0xD9-0xDB | Strings UTF-8 (str8/str16/str32) |
| Array | 0xDC-0xDD | Arrays com comprimento de 16 ou 32 bits |
| Map | 0xDE-0xDF | Maps com comprimento de 16 ou 32 bits |
Documentação do protocolo MessagePack
O que é MessagePack
MessagePack é um formato de serialização binária projetado para troca eficiente de dados. Criado por Sadayuki Furuhashi em 2008, ele empacota estruturas de dados semelhantes a JSON em uma representação binária compacta que normalmente é 50% menor que JSON e mais rápida de analisar. O formato é amplamente adotado em Redis, Fluentd e numerosos sistemas de comunicação em tempo real onde a performance importa.
Estrutura de codificação binária
MessagePack usa um esquema de codificação tipo-comprimento-valor. O primeiro byte (byte de formato) determina o tipo de dados e pode conter o próprio valor para pequenos inteiros e strings curtas. Valores maiores usam bytes adicionais para comprimento e carga útil. Este design permite que MessagePack codifique valores pequenos de forma extremamente eficiente enquanto ainda suporta estruturas de dados grandes.
| Byte de formato | Significado |
|---|---|
| 0x00-0x7F | Fixint positivo (0-127, valor no byte) |
| 0x80-0x8F | Fixmap (0-15 pares, contagem nos 4 bits inferiores) |
| 0x90-0x9F | Fixarray (0-15 elementos, contagem nos 4 bits inferiores) |
| 0xA0-0xBF | Fixstr (0-31 bytes, comprimento nos 5 bits inferiores) |
| 0xC0-0xDF | Tipos Nil, booleano, bin, ext, float, int |
| 0xE0-0xFF | Fixint negativo (-32 a -1) |
Comparação MessagePack vs JSON
Ambos os formatos representam o mesmo modelo de dados, mas otimizam para diferentes cenários. MessagePack prioriza tamanho compacto e velocidade de análise, tornando-o ideal para sistemas de alto throughput. JSON prioriza legibilidade humana e compatibilidade universal em todas as plataformas.
- 30-50% menor que JSON
- Suporte nativo a dados binários
- Serialização e análise mais rápidas
- Seguro em tipos com tipos inteiros distintos
- Legível e editável por humanos
- Suporte universal de navegador e linguagem
- Depuração e logging mais fáceis
Aplicações comuns
- Serialização de dados Redis e cache
- Protocolos de comunicação em tempo real (jogos, chat)
- Agregação e encaminhamento de logs Fluentd
- Frameworks RPC (MessagePack-RPC)
- Aplicações móveis e embarcadas com restrições de largura de banda
Tipos de extensão
MessagePack suporta tipos de extensão definidos pela aplicação. Cada extensão tem um código de tipo (inteiro de -128 a 127) e carga útil binária. Extensões padrão comuns incluem timestamp (tipo -1), que armazena segundos e nanossegundos para representação precisa de tempo.
| Código de tipo | Uso comum |
|---|---|
| -1 | Timestamp (oficial) |
| 0-127 | Tipos definidos pela aplicação |
Ferramentas Relacionadas
Codec CBOR
Codificador/decodificador CBOR binário com conversão JSON, visualizador hex e tags semânticas para desenvolvimento IoT
Formatador JSON
Formate e valide dados JSON para melhorar a legibilidade e depuração
Codificador/Decodificador Base64
Codifique e decodifique strings Base64 rapidamente, suportando conversão de texto e arquivo
Ferramenta Protocol Buffers
Codificador/decodificador Protocol Buffers online. Analise esquemas .proto, codifique JSON para binário ou decodifique binário para JSON