Descodificador de MessagePack
O MessagePack é o que um serviço escolhe quando o JSON é grande demais e o protobuf é cerimónia a mais: os mesmos valores, empacotados em bytes. Essa compacidade é justamente o problema quando algo corre mal, porque uma carga vinda de uma cache, de uma fila ou de um registo é ilegível sem descodificação. Esta ferramenta lê o formato inteiro e mantém as distinções que o JSON perderia. Os inteiros voltam com a largura com que foram escritos, e um valor de 64 bits que não cabe num número de JavaScript fica como cadeia em vez de ser arredondado em silêncio. Os binários continuam binários em vez de virarem texto estragado: a separação entre str e bin chegou depois de o formato sair, e confundi-los é exatamente como um descodificador corrompe dados. Os tipos de extensão são indicados com o seu número, e a extensão de data é descodificada corretamente nas suas três codificações. O resultado é mostrado como árvore com o tipo de cada valor e como JSON, com aquilo que o JSON não exprime escrito por extenso em vez de achatado. Se a entrada tiver mais bytes do que um valor precisa — que é o aspeto de um fluxo de mensagens concatenadas — diz quantos sobram em vez de fingir que não existem. Nada é enviado.
Cole uma carga MessagePack em base64 ou hex para a descodificar.
Como usar
- Cole a carga em base64 ou hex — o formato é detetado e pode forçá-lo.
- Leia a árvore: cada linha mostra a chave, o tipo MessagePack e o valor.
- Copie o JSON quando quiser processar os valores noutro lado.
- Largue um ficheiro binário para descodificar uma carga capturada.
- Veja o aviso de bytes sobrantes se a carga for um fluxo de várias mensagens.
Perguntas frequentes
- Qual é a diferença entre str e bin?
- O MessagePack tinha originalmente um único tipo raw usado para texto e para bytes. A revisão de 2013 separou-o em str para texto UTF-8 e bin para bytes arbitrários, porque de outra forma um descodificador não consegue saber se deve interpretar os bytes como texto. Tratar um bin como cadeia é como os dados binários se corrompem, por isso aqui os dois ficam separados.
- Porque é que um inteiro grande aparece como cadeia no JSON?
- Um número de JavaScript só guarda inteiros exatos até 2^53. O MessagePack lida com inteiros de 64 bits completos, por isso o que passa desse limite é escrito como cadeia na saída JSON: perder os dígitos em silêncio seria pior do que o incómodo.
- Como são descodificadas as datas?
- A extensão de data, tipo -1, tem três codificações: quatro bytes de segundos, doze bytes de nanossegundos e segundos, e uma forma de oito bytes que mete trinta bits de nanossegundos por cima de trinta e quatro de segundos numa só palavra. Essa última é a armadilha: lida como inteiro normal dá uma data dezenas de milhares de anos ao lado.
- O que significa o aviso de bytes sobrantes?
- Os valores do MessagePack são autodelimitados, por isso vários podem seguir-se no mesmo buffer. Quando o primeiro acaba antes da entrada, o resto costuma ser outra mensagem. A contagem diz quanto falta em vez de o ignorar.
- E os tipos de extensão que não são datas?
- São mostrados com o número de tipo e o conteúdo em base64. O significado de uma extensão é definido pela aplicação que a escreveu, por isso não há nada genérico em que a descodificar.
- A minha carga é enviada?
- Não. Os bytes são descodificados no seu navegador e nada é enviado para um servidor.
Ferramentas relacionadas
Visualizador de plist (binário e XML)
Abra uma lista de propriedades da Apple — binária ou XML — e leia-a como árvore, ou converta-a para JSON ou plist XML.
Descodificador de Protobuf (sem .proto)
Cole bytes protobuf em base64 ou hex e leia os campos — números, tipos de wire, mensagens aninhadas, cadeias e arrays packed — sem precisar de um esquema.
Decodificador JWT
Decodifique um JSON Web Token para inspecionar cabeçalho, claims e expiração.
Visualizador Hex Dump
Inspecione texto ou um arquivo pequeno como offset + bytes hex + ASCII imprimível, como `xxd` ou `hexdump -C`.
Calculadora Bit a Bit
AND, OR, XOR, NOT e deslocamentos em dois inteiros — em binário, hex, decimal sem sinal e com sinal, com largura de 8, 16, 32 ou 64 bits.
Tabela de Códigos ASCII
Navegue e busque as 256 linhas da tabela ASCII / ASCII estendida — decimal, hex, octal, binário e nomes de caracteres de controle.