Codor / Decodor VarInt
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.