CoderTools

Codec MessagePack

Codificar e decodificar formato de serialização binária MessagePack

🔒 100% Processamento localOs dados inseridos são processados inteiramente em seu navegador. Nenhum dado é enviado para qualquer servidor.

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

Referência de tipos de dados MessagePack

Nome do tipo Faixa de bytes de formato Descrição
FixInt positivo0x00-0x7FInteiros de 0 a 127 (um byte)
FixInt negativo0xE0-0xFFInteiros de -32 a -1 (um byte)
FixMap0x80-0x8FMaps com 0-15 pares chave-valor
FixArray0x90-0x9FArrays com 0-15 elementos
FixStr0xA0-0xBFStrings com 0-31 bytes de comprimento
Nil0xC0Representa valor null/nil
Booleano0xC2-0xC3True (0xc3) ou False (0xc2)
Binário0xC4-0xC6Dados binários brutos (bin8/bin16/bin32)
Extensão0xC7-0xC9, 0xD4-0xD8Tipos definidos pela aplicação com código de tipo
Ponto flutuante0xCA-0xCBNúmeros de ponto flutuante de 32 ou 64 bits
Inteiro sem sinal0xCC-0xCFInteiros sem sinal de 8/16/32/64 bits
Inteiro com sinal0xD0-0xD3Inteiros com sinal de 8/16/32/64 bits
String0xD9-0xDBStrings UTF-8 (str8/str16/str32)
Array0xDC-0xDDArrays com comprimento de 16 ou 32 bits
Map0xDE-0xDFMaps 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-0x7FFixint positivo (0-127, valor no byte)
0x80-0x8FFixmap (0-15 pares, contagem nos 4 bits inferiores)
0x90-0x9FFixarray (0-15 elementos, contagem nos 4 bits inferiores)
0xA0-0xBFFixstr (0-31 bytes, comprimento nos 5 bits inferiores)
0xC0-0xDFTipos Nil, booleano, bin, ext, float, int
0xE0-0xFFFixint 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.

Vantagens do MessagePack
  • 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
Vantagens do JSON
  • 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
-1Timestamp (oficial)
0-127Tipos definidos pela aplicação

Menu Rápido

Nenhuma ferramenta recente