DevToys Web Pro iconDevToys Web ProBlog
Evaluează-ne:
Încearcă extensia de browser:

Codor / Decodor VarInt

12 octeți
Mod

Valori zecimale

  • Ieșire VarInt

  • Detalii tehnice

    Cum funcționează encoderul / decoderul VarInt

    Ce face instrumentul

    Instrumentul VarInt codifică întregi fără semn ca întregi cu lungime variabilă LEB128 în stil Protobuf și decodează fluxuri binare VarInt înapoi în liste de întregi. Fiecare valoare este codificată în 1–10 octeți în funcție de magnitudine, iar bitul cel mai semnificativ al fiecărui octet semnalizează dacă urmează alți octeți. Ieșirea este afișată ca array de octeți, hexazecimal sau Base64 pentru încorporare ușoară în teste și fixture-uri.

    Cazuri de utilizare comune pentru dezvoltatori

    Inginerii care depanează payload-uri în format wire Protobuf folosesc codarea/decodarea VarInt pentru a inspecta tag-urile câmpurilor și valorile câmpurilor întregi fără semn fără a porni un runtime Protobuf complet. Dezvoltatorii Bitcoin și ai altor criptomonede parsează lungimi de script și numărări de tranzacții codificate VarInt. Instrumentul este util și la reverse engineering pentru protocoale binare personalizate care adoptă LEB128 datorită compactității sale pentru numere mici.

    Formate de date, tipuri sau variante

    LEB128 (Little-Endian Base 128) emite 7 biți de payload per octet, iar bitul cel mai semnificativ acționează ca indicator de continuare. Numerele mici (0–127) folosesc un singur octet; numerele până la 16.383 folosesc doi octeți; și așa mai departe. Intrările acceptă numere zecimale separate prin spații, virgule sau linii noi. Ieșirile sunt disponibile în hexazecimal, Base64 și notație brută de array de octeți. Întregii semnați pot fi codificați aplicând mai întâi transformarea ZigZag (n << 1) ^ (n >> 31).

    Capcane frecvente și cazuri limită

    Precizia numerelor în JavaScript se oprește la 2^53 − 1; valorile peste Number.MAX_SAFE_INTEGER nu pot fi codificate în siguranță. Fluxurile VarInt trunchiate (fără octet terminator) se decodează parțial și returnează o eroare care indică offset-ul. Numerele negative nu pot fi codificate direct — folosiți mai întâi codarea ZigZag. Evitați copierea octeților VarInt din capturi de ecran unde padding-ul Base64 poate fi eliminat, deoarece padding-ul lipsă modifică granițele dintre octeți.

    Când să folosești acest instrument vs cod

    Folosiți instrumentul din browser pentru inspecția rapidă a octeților wire Protobuf în timpul depanării sau când scrieți teste. Pentru codare în producție, folosiți biblioteci VarInt native limbajului (`varint` pe npm, `binary.varint` în encoding/binary din Go, `decode_varint` în google.protobuf.internal din Python), care gestionează streaming-ul, recuperarea după erori și transformarea ZigZag într-un singur apel.