MessagePack-rydder
Rydder opp i rotete MessagePack-hex- eller base64-strenger. Fjerner 0x-prefikser, utvider \xNN-escapes, pakker ut Pythons b'...'-literaler og kapper paste-rusk.
Hva MessagePack-rydderen faktisk gjør
Vær ærlig med deg selv et øyeblikk: MessagePack er et binærformat. Hvis et par bytes ble kuttet av da du copy-pastet ut av en Cloudflare Worker-logg, kan ingen verktøy trylle dem tilbake — de bytsene er borte, og specen på github.com/msgpack/msgpack er pass bygget rundt lengdeprefikser til at en manglende hale feiler under dekoding uansett hva du gjør. Så denne siden LATER IKKE som om den reparerer korrupte binærdata.
Det den GJØR er noe kjedeligere men nyttig: den fjerner formateringsstøyen som hex- og base64-dumper (RFC 4648) plukker opp på veien gjennom terminalen, debuggeren, iOS-konsollen og utklippstavlen. Konkret: kapper omkransende mellomrom, skreller bort omkransende hermetegn, pakker ut Pythons b'...'-byte-literaler, utvider \xNN-escape-sekvenser til rå hex-sifre, fjerner 0x-prefikser og kaster ut kommaer og mellomrom inni payloaden. Det rene resultatet er hva en ekte msgpack-dekoder — som det offisielle @msgpack/msgpack-biblioteket eller en hvilken som helst spec-tro implementasjon — aksepterer uten å klage.
Konkret eksempel: lim inn b'\x83\xa7orderId\xa8ORD-7421...' til venstre, trykk Rydd opp, få den rå hex-strengen til høyre som du kan slippe rett inn i vår MessagePack Viewer eller pipe inn i en Uint8Array i en rask Node-REPL. Ingenting fancy. Bare å fjerne støyen.
Slik rydder du opp i en limt-inn MessagePack-streng
Tre trinn. Bygd for det øyeblikket der du nettopp har kopiert noe ut av en loggrad og vil at det skal være hex du kan gi en dekoder.
Lim inn den rotete strengen i venstre rute
Slipp det du har inn i venstre editor — en Python-repr(), en linje fra en iOS-enhets konsoll, output fra curl --data-binary @file | xxd, en Cloudflare Worker-loggoppføring, hva som helst. Rydderen trenger ikke at det skal se pent ut på vei inn. Trykk Eksempel på rotete hex for et bevisst stygt eksempel med prefikser og escapes blandet inn. Eksempel på hva du kan lime inn:
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 ekte Python-byte-literal skrevet ut av msgpack-python. Rydderen kjenner igjen b'...'-omslaget, skreller det av og gjør hver \xNN om til rå hex.
Klikk Rydd opp
Trykk den grønne Rydd opp!!-knappen. At opprydningen er klikk-drevet er med vilje — du bør se hva som går inn før du aksepterer hva som kommer ut. Høyre rute viser den rene hexen (eller base64, autodetektert), og notatpanelet under editorene lister hver transformasjon vi har anvendt så ingenting skjer i det stille.
Lever resultatet til en ekte dekoder
Ta den rene strengen fra høyre rute og slipp den inn i vår MessagePack Viewer eller MessagePack til JSON-verktøy. Hvis bytsene faktisk var intakte og bare formateringen var problemet, ser du den dekodede JSON-en din — SKU-101-radene, kunde Ava Chen, alt sammen. Hvis dekoderen fortsatt klager, er problemet ekte korrupsjon eller avkutting, og eneste fix er å hente bytsene igjen fra kilden.
Når du faktisk vil bruke dette
Plukke bytes ut av en Cloudflare Worker-logg
Workers elsker å logge binære payloads som 0x83 0xa7 6f 72 64 65 72... med mellomrom mellom bytes og 0x på hver. Kopier raden, lim inn her, og rydderen fjerner prefiksene og mellomrommene med ett klikk — og etterlater deg med 83a76f7264657249... som en ekte dekoder eter.
Pakke ut en Python-repr fra en debugger
Du traff et breakpoint i pdb, kjørte p msgpack.packb(order) og fikk tilbake b'\x83\xa7orderId\xa8ORD-7421'. Det er en Python-byte-literal — b-prefikset og hermetegnene er ikke en del av dataene. Rydderen skreller dem av og utvider hver \xNN til det faktiske hex-paret, så du kan lime resultatet inn i vieweren uten å skrive det om for hånd.
Rydde opp i et curl --data-binary | xxd-dump
Du kjørte curl --data-binary @msg.bin https://api.example.com | xxd for å inspisere hva serveren fikk. xxd-output har radnummer til venstre, ASCII til høyre og hex-bytsene i midten med mellomrom. Kapp adressekolonnen og ASCII-kolonnen selv, lim inn midten i rydderen, og den fjerner mellomrommene mellom bytes så hexen igjen blir én sammenhengende streng.
Lime inn fra en iOS-enhets konsoll
iOS-konsolloutput pakker iblant en binær payload inn i enkle hermetegn og setter inn myke linjeskift. Rydderen håndterer omkransende hermetegn og mellomrom i én pass, noe som sparer deg for å leke søk-og-erstatt i en teksteditor før du kan dekode noe som helst.
Vanlige spørsmål
Kan dette verktøyet reparere korrupte MessagePack-binærdata?
Nei, og du bør være skeptisk til ethvert verktøy som hevder det kan. MessagePack er et binært format med lengdeprefikser — hvis en byte mangler eller er feil midt i et lengdefelt, kan ikke dekoderen gjette hva som skulle ha vært der. Denne siden fikser bare paste-rusk og formateringsstøy. Hvis bytsene dine faktisk er korrupte, er fixen å hente dem på nytt fra kilden: kjøre forespørselen om igjen, lese om igjen fra logg-retentionlageret, eksportere på nytt fra databasen. Det finnes ingen programvareerstatning for de manglende bytsene.
Hva betyr "rydd opp" akkurat her?
Seks konkrete normaliseringer: kapper omkransende mellomrom; skreller bort omkransende enkle eller doble hermetegn; pakker ut Pythons b'...' / b"..."-byte-literaler; utvider \xNN-escape-sekvenser til rå hex-sifre; fjerner 0x-prefikser fra hver byte; fjerner mellomrom og kommaer mellom bytes. Etter alt det parses resultatet én gang som enten hex eller base64 for å bekrefte at det er strukturelt sunt. Notatpanelet under editorene lister hver transformasjon som faktisk ble fyrt av på inputtet ditt.
Hvorfor er det en Rydd opp-knapp i stedet for auto-rydding mens man skriver?
Med vilje. De fleste av våre andre verktøy auto-oppdaterer ved input-endring fordi inputtet er lesbart og du vil ha umiddelbar tilbakemelding. Dette er motsatt — inputtet er en haug med escape-sekvenser og målet ditt er å verifisere hva som ble transformert før du stoler på outputtet. Klikk-drevet betyr at du kan lime inn, se på inputtet, klikke og så lese notatpanelet for å bekrefte at vi gjorde det du forventet.
Forlater dataene mine nettleseren?
Nei. Hele opprydningen kjører lokalt i denne fanen. Ingen fetch, ingen opplasting, ingen telemetri på inputtet. Lukk fanen og dataene er borte. Med det sagt, behandle URL-feltet som et offentlig rom — ikke lim inn payloads med hemmeligheter i en query string, og tøm utklippstavlen hvis den bar noe sensitivt etter at du er ferdig.
Hva hvis inputtet mitt er base64 i stedet for hex?
Det autodetekteres. Hvis inputtet er bare hex-tegn (etter at vi har fjernet mellomrom, kommaer, 0x og \xNN-escapes) og har jevn lengde, behandler vi det som hex. Ellers prøver vi standard base64. Uansett bevarer det rene outputtet det detekterte formatet — ren hex forblir hex, ren base64 forblir base64. Slipp resultatet inn i MessagePack Viewer som neste skritt, som autodetekterer på samme måte.
Hvorfor ser outputtet av og til identisk ut med inputtet?
Fordi inputtet ditt allerede var rent — ingenting å gjøre. I det tilfellet viser notatpanelet "Inputtet var allerede rent." Dette er normalt og bra. Rydderen finner ikke på transformasjoner bare for å se travel ut.
Andre MessagePack-verktøy
Å rydde opp i formateringen er første skritt. Når strengen er ren, dekoder disse og tar bytsene hele veien rundt: