MessagePack-städare
Städar upp stökiga MessagePack-hex- eller base64-strängar. Tar bort 0x-prefix, expanderar \xNN-escapes, packar upp Pythons b'...'-literaler och kapar paste-skräp.
Vad MessagePack-städaren faktiskt gör
Var ärlig mot dig själv en sekund: MessagePack är ett binärformat. Om några bytes blev kapade när du copy-pastade ur en Cloudflare Worker-logg kan inget verktyg trolla tillbaka dem — de bytes är borta, och specen på github.com/msgpack/msgpack är så pass byggd kring längdsprefix att en saknad svans misslyckas vid avkodning vad du än gör. Så denna sida LÅTSAS INTE laga trasiga binärdata.
Det den GÖR är något tråkigare men användbart: den tar bort formateringsbruset som hex- och base64-dumpar (RFC 4648) snappar upp på vägen genom din terminal, debugger, iOS-konsol och urklipp. Konkret: kapar omgivande blanksteg, skalar bort omslutande citattecken, packar upp Pythons b'...'-byte-literaler, expanderar \xNN-escape-sekvenser till råa hex-siffror, tar bort 0x-prefix och slänger kommatecken och blanksteg inuti payloaden. Det rena resultatet är vad en riktig msgpack-dekoder — som det officiella @msgpack/msgpack-biblioteket eller någon spec-trogen implementation — accepterar utan att gnälla.
Konkret exempel: klistra in b'\x83\xa7orderId\xa8ORD-7421...' till vänster, tryck Städa, få den råa hex-strängen till höger som du kan släppa rakt in i vår MessagePack Viewer eller pipa in i en Uint8Array i en snabb Node-REPL. Inget märkvärdigt. Bara att ta bort bruset.
Hur man städar en inklistrad MessagePack-sträng
Tre steg. Byggt för stunden då du precis har kopierat något ur en loggrad och vill att det ska vara hex du kan ge en dekoder.
Klistra in den stökiga strängen i vänster panel
Släpp in vad du har i vänster editor — en Python-repr(), en iOS-enhetskonsolrad, utdata från curl --data-binary @file | xxd, en Cloudflare Worker-loggpost, vad som helst. Städaren behöver inte att det ska se snyggt ut på ingången. Tryck Exempel på stökig hex för ett medvetet fult exempel med prefix och escapes blandade. Exempel på vad du skulle kunna klistra in:
b'\x83\xa7orderId\xa8ORD-7421\xa5items\x92\x82\xa3sku\xa7SKU-101\xa3qty\x02\x82\xa3sku\xa7SKU-244\xa3qty\x01\xa8customer\xa8Ava Chen'Det där är en riktig Python-byte-literal utskriven av msgpack-python. Städaren känner igen b'...'-omslaget, skalar bort det och gör om varje \xNN till rå hex.
Klicka på Städa
Tryck den gröna Städa!!-knappen. Att städningen är klick-driven är med flit — du ska se vad som går in innan du accepterar vad som kommer ut. Höger panel visar den rena hexen (eller base64, autodetekterat), och anteckningspanelen under editorerna listar varje transformation vi tillämpat så inget händer i tysthet.
Lämna resultatet till en riktig dekoder
Ta den rena strängen från höger panel och släpp in i vår MessagePack Viewer eller MessagePack till JSON-verktyg. Om bytsen verkligen var intakta och bara formateringen var problemet ser du din avkodade JSON — SKU-101-rader, kund Ava Chen, hela paketet. Om dekodern fortfarande gnäller är problemet riktig korruption eller trunkering, och enda fixet är att hämta bytsen igen från källan.
När du faktiskt kommer använda detta
Plocka ut bytes ur en Cloudflare Worker-logg
Workers älskar att logga binära payloads som 0x83 0xa7 6f 72 64 65 72... med blanksteg mellan bytes och 0x på varje. Kopiera raden, klistra in här, och städaren tar bort prefixen och blanksteg på ett klick — och lämnar dig med 83a76f7264657249... som en riktig dekoder käkar upp.
Packa upp en Python-repr från en debugger
Du träffade en breakpoint i pdb, körde p msgpack.packb(order) och fick tillbaka b'\x83\xa7orderId\xa8ORD-7421'. Det är en Python-byte-literal — b-prefixet och citattecknen är inte del av datan. Städaren skalar bort dem och expanderar varje \xNN till det faktiska hex-paret, så du kan klistra resultatet i viewern utan att skriva om för hand.
Städa upp en curl --data-binary | xxd-dump
Du körde curl --data-binary @msg.bin https://api.example.com | xxd för att inspektera vad servern fick. xxd-utdata har radnummer till vänster, ASCII till höger och hex-bytsen i mitten med blanksteg. Kapa adresskolumnen och ASCII-kolumnen själv, klistra in mitten i städaren, och den tar bort blanksteg mellan bytes så hexen återigen blir en sammanhängande sträng.
Klistra in från en iOS-enhetskonsol
iOS-konsolutdata sveper ibland en binär payload i enkla citattecken och stoppar in mjuka radbrytningar. Städaren hanterar omslutande citattecken och blanksteg i en enda passage, vilket besparar dig att leka sök-och-ersätt i en texteditor innan du kan avkoda nåt.
Vanliga frågor
Kan det här verktyget laga trasiga MessagePack-binärdata?
Nej, och du borde misstänksamma alla verktyg som påstår sig kunna det. MessagePack är ett binärformat med längdsprefix — om en byte saknas eller är fel mitt i ett längdsfält kan dekodern inte gissa vad som skulle ha varit där. Den här sidan fixar bara paste-skräp och formateringsbrus. Om dina bytes faktiskt är korrupta är fixet att hämta dem igen från källan: köra om förfrågan, läsa om från loggens retentionslagring, exportera om från databasen. Det finns ingen mjukvaruersättning för de saknade bytsen.
Vad betyder "städa" exakt här?
Sex konkreta normaliseringar: kapar omgivande blanksteg; skalar bort omslutande enkla eller dubbla citattecken; packar upp Pythons b'...' / b"..."-byte-literaler; expanderar \xNN-escape-sekvenser till råa hex-siffror; tar bort 0x-prefix från varje byte; tar bort blanksteg och kommatecken mellan bytes. Efter allt det parsas resultatet en gång som antingen hex eller base64 för att bekräfta att det är strukturellt sunt. Anteckningspanelen under editorerna listar varje transformation som faktiskt avfyrats på din input.
Varför finns det en Städa-knapp istället för auto-städning medan man skriver?
Med flit. De flesta av våra andra verktyg auto-uppdaterar vid input-ändring för input är läsbar och du vill ha omedelbar feedback. Det här är motsatsen — input är en hög med escape-sekvenser och ditt mål är att verifiera vad som transformerades innan du litar på utgången. Klick-driven betyder att du kan klistra in, kolla på inputen, klicka och sen läsa anteckningspanelen för att bekräfta att vi gjorde det du förväntade dig.
Lämnar mina data webbläsaren?
Nej. Hela städningen körs lokalt i den här fliken. Ingen fetch, ingen uppladdning, ingen telemetri på inputen. Stäng fliken och datan är borta. Med det sagt, behandla URL-fältet som en offentlig plats — klistra inte in payloads med hemligheter i en query string, och rensa urklippet om det burit nåt känsligt efter att du är klar.
Tänk om min input är base64 istället för hex?
Det autodetekteras. Om inputen är bara hex-tecken (efter att vi tagit bort blanksteg, kommatecken, 0x och \xNN-escapes) och har jämn längd behandlar vi den som hex. Annars provar vi standard base64. Hur som helst behåller den rena utgången det detekterade formatet — ren hex förblir hex, ren base64 förblir base64. Släpp resultatet i MessagePack Viewer härnäst, som autodetekterar på samma sätt.
Varför ser utgången ibland identisk ut med ingången?
För att din input redan var ren — inget att göra. I det fallet visar anteckningspanelen "Inputen var redan ren." Detta är normalt och bra. Städaren hittar inte på transformationer bara för att se upptagen ut.
Andra MessagePack-verktyg
Att städa formateringen är första steget. När strängen är ren avkodar dessa och tar bytsen hela vägen runt: