MessagePack-rydder
Rydder op i rodede MessagePack-hex- eller base64-strenge. Fjerner 0x-præfikser, udvider \xNN-escapes, pakker Pythons b'...'-literaler ud og klipper paste-skrald væk.
Hvad MessagePack-rydderen rent faktisk gør
Vær lige ærlig med dig selv et øjeblik: MessagePack er et binært format. Hvis et par bytes blev klippet af, da du copy-pastede ud af en Cloudflare Worker-log, kan ingen værktøjer trylle dem tilbage — de bytes er væk, og specen på github.com/msgpack/msgpack er nok bygget på længdepræfikser til, at en manglende hale fejler under dekodning, uanset hvad du gør. Så denne side LADER IKKE som om, den reparerer korrupte binære data.
Det den GØR er noget mere kedeligt, men nyttigt: den fjerner formateringsstøjen, som hex- og base64-dumps (RFC 4648) samler op på vejen gennem din terminal, debugger, iOS-konsol og udklipsholder. Konkret: klipper omkransende mellemrum, piller omkransende anførselstegn af, pakker Pythons b'...'-byte-literaler ud, udvider \xNN-escape-sekvenser til rå hex-cifre, fjerner 0x-præfikser og smider kommaer og mellemrum væk inde i payloaden. Det rene resultat er, hvad en rigtig msgpack-dekoder — som det officielle @msgpack/msgpack-bibliotek eller en hvilken som helst spec-tro implementering — accepterer uden at brokke sig.
Konkret eksempel: indsæt b'\x83\xa7orderId\xa8ORD-7421...' til venstre, tryk Ryd op, og få den rå hex-streng til højre, som du kan smide direkte ind i vores MessagePack Viewer eller pibe ind i en Uint8Array i en hurtig Node-REPL. Intet flot. Bare at fjerne støjen.
Sådan rydder du op i en indsat MessagePack-streng
Tre trin. Bygget til det øjeblik, hvor du lige har kopieret noget ud af en logline og vil have, at det er hex, du kan give en dekoder.
Indsæt den rodede streng i venstre rude
Smid ind, hvad du har, i venstre editor — en Python-repr(), en linje fra en iOS-enheds konsol, output fra curl --data-binary @file | xxd, en Cloudflare Worker-loglinje, hvad som helst. Rydderen behøver ikke, at det skal se pænt ud på vejen ind. Tryk på Eksempel på rodet hex for et bevidst grimt eksempel med præfikser og escapes blandet sammen. Eksempel på, hvad du kunne indsætte:
b'\x83\xa7orderId\xa8ORD-7421\xa5items\x92\x82\xa3sku\xa7SKU-101\xa3qty\x02\x82\xa3sku\xa7SKU-244\xa3qty\x01\xa8customer\xa8Ava Chen'Det er en ægte Python-byte-literal udskrevet af msgpack-python. Rydderen genkender b'...'-omslaget, piller det af og laver hver \xNN om til rå hex.
Klik på Ryd op
Tryk den grønne Ryd op!!-knap. At oprydningen er klik-drevet er med vilje — du skal se, hvad der går ind, før du accepterer, hvad der kommer ud. Højre rude viser den rene hex (eller base64, autodetekteret), og notepanelet under editorerne lister hver transformation, vi har anvendt, så intet sker i tavshed.
Aflever resultatet til en rigtig dekoder
Tag den rene streng fra højre rude og smid den ind i vores MessagePack Viewer eller MessagePack til JSON-værktøj. Hvis bytsene rent faktisk var intakte, og kun formateringen var problemet, ser du din dekodede JSON — SKU-101-linjeposterne, kunde Ava Chen, det hele. Hvis dekoderen stadig brokker sig, er problemet rigtig korruption eller afkortning, og det eneste fix er at hente bytsene igen fra kilden.
Hvornår du faktisk vil bruge dette
Hive bytes ud af en Cloudflare Worker-log
Workers elsker at logge binære payloads som 0x83 0xa7 6f 72 64 65 72... med mellemrum mellem bytes og 0x på hver. Kopier linjen, indsæt her, og rydderen fjerner præfikser og mellemrum med ét klik — og efterlader dig med 83a76f7264657249..., som en rigtig dekoder æder.
Pakke en Python-repr ud fra en debugger
Du ramte et breakpoint i pdb, kørte p msgpack.packb(order) og fik b'\x83\xa7orderId\xa8ORD-7421' tilbage. Det er en Python-byte-literal — b-præfikset og anførselstegnene er ikke en del af dataene. Rydderen piller dem af og udvider hver \xNN til det faktiske hex-par, så du kan indsætte resultatet i vieweren uden at skrive det om i hånden.
Rydde op i et curl --data-binary | xxd-dump
Du kørte curl --data-binary @msg.bin https://api.example.com | xxd for at inspicere, hvad serveren fik. xxd-output har linjenumre til venstre, ASCII til højre og hex-byts i midten med mellemrum. Klip selv adressekolonnen og ASCII-kolonnen væk, indsæt midten i rydderen, og den fjerner mellemrumene mellem bytes, så hexen igen er én sammenhængende streng.
Indsætte fra en iOS-enheds konsol
iOS-konsoloutput pakker nogle gange en binær payload ind i enkelte anførselstegn og sætter bløde linjeskift ind. Rydderen klarer omkransende anførselstegn og mellemrum i én pass, hvilket sparer dig for at lege find-og-erstat i en teksteditor, før du kan dekode noget som helst.
Almindelige spørgsmål
Kan dette værktøj reparere korrupte MessagePack-binærdata?
Nej, og du bør være skeptisk over for ethvert værktøj, der hævder, det kan. MessagePack er et binært format med længdepræfikser — hvis en byte mangler eller er forkert midt i et længdefelt, kan dekoderen ikke gætte, hvad der skulle have været der. Denne side fikser kun paste-skrald og formateringsstøj. Hvis dine bytes faktisk er korrupte, er fixet at hente dem igen fra kilden: køre forespørgslen igen, læse igen fra logretention-lageret, eksportere igen fra databasen. Der er ingen software-erstatning for de manglende bytes.
Hvad betyder "ryd op" præcist her?
Seks konkrete normaliseringer: klipper omkransende mellemrum; piller omkransende enkelte eller dobbelte anførselstegn af; pakker Pythons b'...' / b"..."-byte-literaler ud; udvider \xNN-escape-sekvenser til rå hex-cifre; fjerner 0x-præfikser fra hver byte; fjerner mellemrum og kommaer mellem bytes. Efter alt det parses resultatet én gang som enten hex eller base64 for at bekræfte, at det er strukturelt sundt. Notepanelet under editorerne lister hver transformation, der faktisk blev affyret på din input.
Hvorfor er der en Ryd op-knap i stedet for auto-oprydning, mens man skriver?
Med vilje. De fleste af vores andre værktøjer auto-opdaterer ved input-ændring, fordi inputtet er læsbart, og du vil have øjeblikkelig feedback. Dette er det modsatte — inputtet er en bunke escape-sekvenser, og dit mål er at verificere, hvad der blev transformeret, før du stoler på outputtet. Klik-drevet betyder, at du kan indsætte, kigge på inputtet, klikke og så læse notepanelet for at bekræfte, at vi gjorde, hvad du forventede.
Forlader mine data browseren?
Nej. Hele oprydningen kører lokalt i denne fane. Ingen fetch, ingen upload, ingen telemetri på inputtet. Luk fanen, og dataene er væk. Når det er sagt, behandl URL-feltet som et offentligt rum — indsæt ikke payloads med hemmeligheder i en query string, og ryd dit udklipsholder, hvis det bar noget følsomt, når du er færdig.
Hvad hvis mit input er base64 i stedet for hex?
Det autodetekteres. Hvis inputtet er udelukkende hex-tegn (efter at vi har fjernet mellemrum, kommaer, 0x og \xNN-escapes) og har lige længde, behandler vi det som hex. Ellers prøver vi standard base64. Uanset hvad bevarer det rene output det detekterede format — ren hex forbliver hex, ren base64 forbliver base64. Smid resultatet ind i MessagePack Viewer som det næste, der autodetekterer på samme måde.
Hvorfor ser outputtet nogle gange identisk ud med inputtet?
Fordi dit input allerede var rent — intet at gøre. I det tilfælde viser notepanelet "Input var allerede rent." Dette er normalt og godt. Rydderen finder ikke på transformationer bare for at se travl ud.
Andre MessagePack-værktøjer
At rydde op i formateringen er første trin. Når strengen er ren, dekoder disse og tager bytsene hele vejen rundt: