Limpador de MessagePack
Limpa strings hex ou base64 de MessagePack bagunçadas. Remove prefixos 0x, expande escapes \xNN, desembrulha literais b'...' do Python e corta sujeira de copiar e colar.
O que o Limpador de MessagePack realmente faz
Sê honesto contigo por um segundo: MessagePack é um formato binário. Se alguns bytes foram cortados quando copiaste e colaste de um log de Cloudflare Worker, nenhuma ferramenta consegue trazê-los de volta por mágica — esses bytes foram-se, e a especificação em github.com/msgpack/msgpack usa prefixos de comprimento o suficiente para que uma cauda em falta falhe a descodificação faças o que fizeres. Por isso esta página NÃO finge reparar dados binários corrompidos.
O que ela FAZ é algo mais chato mas útil: remove o ruído de formatação que dumps hex e base64 (RFC 4648) apanham ao passar pelo teu terminal, depurador, consola iOS e área de transferência. Concretamente, corta os espaços ao redor, descasca aspas envolventes, desembrulha literais de bytes b'...' do Python, expande sequências de escape \xNN em dígitos hex crus, remove prefixos 0x, e descarta vírgulas e espaços de dentro do payload. O resultado limpo é o que um decodificador msgpack de verdade — como a biblioteca oficial @msgpack/msgpack ou qualquer implementação conforme — vai aceitar sem reclamar.
Exemplo concreto: cola b'\x83\xa7orderId\xa8ORD-7421...' à esquerda, carrega em Limpar, recebe a string hex crua à direita que podes meter direto no nosso Visualizador de MessagePack ou canalizar para um Uint8Array num REPL Node rápido. Nada de extraordinário. Apenas remover o ruído.
Como limpar uma string MessagePack colada
Três passos. Pensado para o momento em que acabaste de copiar algo de uma linha de log e queres que seja hex que possas entregar a um decodificador.
Cola a string bagunçada no painel esquerdo
Mete o que tiveres no editor da esquerda — um repr() de Python, uma linha de consola de dispositivo iOS, a saída de curl --data-binary @file | xxd, uma entrada de log de Cloudflare Worker, qualquer coisa. O limpador não precisa que entre bonito. Carrega em Hex bagunçado de exemplo para um exemplo deliberadamente feio com prefixos e escapes misturados. Exemplo do que podes colar:
b'\x83\xa7orderId\xa8ORD-7421\xa5items\x92\x82\xa3sku\xa7SKU-101\xa3qty\x02\x82\xa3sku\xa7SKU-244\xa3qty\x01\xa8customer\xa8Ava Chen'Aquilo é um literal de bytes Python real impresso pelo msgpack-python. O limpador reconhece o invólucro b'...', descasca-o, e converte cada \xNN em hex cru.
Clica em Limpar
Carrega no botão verde Limpar!!. A limpeza é acionada por clique de propósito — devias ver o que está a entrar antes de aceitar o que sai. O painel direito mostra o hex limpo (ou base64, autodetectado), e o painel de notas debaixo dos editores lista cada transformação que aplicámos para que nada aconteça em silêncio.
Entrega o resultado a um decodificador de verdade
Pega a string limpa do painel direito e mete-a no nosso Visualizador de MessagePack ou ferramenta MessagePack para JSON. Se os bytes estavam mesmo intactos e só a formatação era o problema, vais ver o teu JSON descodificado — as linhas SKU-101, o cliente Ava Chen, tudo. Se o decodificador continuar a reclamar, o problema é corrupção real ou truncagem, e o único conserto é apanhar os bytes outra vez na fonte.
Quando vais mesmo usar isto
Tirar bytes de um log de Cloudflare Worker
Workers adoram registar payloads binários como 0x83 0xa7 6f 72 64 65 72... com espaços entre bytes e 0x em cada um. Copia a linha, cola aqui, e o limpador remove os prefixos e os espaços num clique — deixando-te com 83a76f7264657249... que um decodificador de verdade vai engolir.
Desembrulhar um repr Python de um depurador
Atingiste um breakpoint no pdb, executaste p msgpack.packb(order), e voltou b'\x83\xa7orderId\xa8ORD-7421'. Aquilo é um literal de bytes Python — o prefixo b e as aspas não fazem parte dos dados. O limpador descasca-os e expande cada \xNN no par hex real, para colares o resultado no visualizador sem o reescrever à mão.
Limpar um dump curl --data-binary | xxd
Executaste curl --data-binary @msg.bin https://api.example.com | xxd para inspecionar o que o servidor recebeu. A saída do xxd tem números de linha à esquerda, ASCII à direita, e os bytes hex no meio com espaços. Tira a coluna de endereço e a coluna ASCII tu mesmo, cola o meio no limpador, e ele remove os espaços entre bytes para o hex voltar a ser uma string sólida.
Colar de uma consola de dispositivo iOS
A saída da consola iOS às vezes embrulha um payload binário em aspas simples e insere quebras de linha suaves. O limpador trata as aspas envolventes e os espaços numa única passagem, o que te poupa de fazer find-and-replace num editor de texto antes de poderes descodificar seja o que for.
Perguntas comuns
Esta ferramenta consegue reparar dados binários corrompidos do MessagePack?
Não, e devias desconfiar de qualquer ferramenta que diga que consegue. MessagePack é um formato binário com prefixos de comprimento — se um byte falta ou está errado no meio de um campo de comprimento, o decodificador não consegue adivinhar o que era suposto estar lá. Esta página só corrige sujeira de colar e ruído de formatação. Se os teus bytes estão mesmo corrompidos, o conserto é apanhá-los outra vez na fonte: re-executar o pedido, reler do armazenamento de retenção de logs, re-exportar da base de dados. Não há substituto de software para os bytes em falta.
O que significa exatamente "limpar" aqui?
Seis normalizações concretas: corta os espaços ao redor; descasca aspas simples ou duplas envolventes; desembrulha literais de bytes b'...' / b"..." do Python; expande sequências de escape \xNN em dígitos hex crus; remove prefixos 0x de cada byte; remove espaços e vírgulas entre bytes. Depois de tudo isso, o resultado é parseado uma vez como hex ou base64 para confirmar que está estruturalmente são. O painel de notas debaixo dos editores lista cada transformação que realmente disparou na tua entrada.
Porque há um botão Limpar em vez de auto-limpeza ao escrever?
De propósito. A maioria das nossas outras ferramentas atualiza-se automaticamente ao mudar a entrada porque a entrada é legível e queres feedback instantâneo. Esta é o oposto — a entrada é um monte de sequências de escape e o teu objetivo é verificar o que foi transformado antes de confiares na saída. Acionado por clique significa que podes colar, olhar para a entrada, clicar, e depois ler o painel de notas para confirmar que fizemos o que esperavas.
Os meus dados saem do navegador?
Não. A limpeza inteira corre localmente neste separador. Não há fetch, não há upload, não há telemetria sobre a entrada. Fecha o separador e os dados desaparecem. Dito isto, trata a barra de URL como um espaço público — não coles payloads com segredos numa query string, e limpa a tua área de transferência se ela carregava algo sensível depois de terminares.
E se a minha entrada for base64 em vez de hex?
É autodetectada. Se a entrada é toda caracteres hex (depois de removermos espaços, vírgulas, 0x e escapes \xNN) e tiver comprimento par, tratamo-la como hex. Caso contrário tentamos base64 padrão. De qualquer maneira, a saída limpa preserva o formato detectado — hex limpo continua hex, base64 limpo continua base64. Mete o resultado no Visualizador de MessagePack a seguir, que autodetecta da mesma forma.
Porque é que a saída às vezes parece idêntica à entrada?
Porque a tua entrada já estava limpa — nada para fazer. Nesse caso o painel de notas mostra "A entrada já estava limpa." Isto é normal e bom. O limpador não vai inventar transformações só para parecer ocupado.
Outras ferramentas MessagePack
Limpar a formatação é o primeiro passo. Uma vez a string limpa, estas descodificam e fazem a viagem completa dos bytes: