Codificador / Descodificador VarInt
Valors decimals
Sortida VarInt
Detalls tècnics
Com funciona el codificador / descodificador VarInt
Què fa l’eina
L’eina VarInt codifica enters sense signe com a enters de longitud variable LEB128 d’estil Protobuf i descodifica fluxos binaris VarInt de nou a llistes d’enters. Cada valor es codifica en 1–10 bytes segons la seva magnitud, amb el bit alt de cada byte indicant si segueixen més bytes. La sortida es mostra com un array de bytes, en hexadecimal o en Base64 per facilitar-ne la inserció en proves i fixtures.
Casos d’ús habituals per a desenvolupadors
Els enginyers que depuren càrregues útils en format wire de Protobuf utilitzen la codificació/descodificació VarInt per inspeccionar etiquetes de camp i valors de camps d’enters sense signe sense haver d’aixecar un runtime complet de Protobuf. Els desenvolupadors de Bitcoin i d’altres criptomonedes analitzen longituds d’script codificades en VarInt i recomptes de transaccions. L’eina també és útil quan es fa enginyeria inversa de protocols binaris personalitzats que adopten LEB128 per la seva compacitat amb nombres petits.
Formats, tipus o variants de dades
LEB128 (Little-Endian Base 128) emet 7 bits de càrrega útil per byte, amb el bit més significatiu actuant com a indicador de continuació. Els nombres petits (0–127) utilitzen un sol byte; els nombres fins a 16.383 utilitzen dos bytes; i així successivament. Les entrades accepten nombres decimals separats per espais en blanc, comes o salts de línia. Les sortides estan disponibles en hexadecimal, Base64 i notació d’array de bytes en brut. Els enters amb signe es poden codificar aplicant primer la transformació ZigZag (n << 1) ^ (n >> 31).
Errors habituals i casos límit
La precisió dels nombres de JavaScript arriba fins a 2^53 − 1; els valors per sobre de Number.MAX_SAFE_INTEGER no es poden codificar de manera segura. Els fluxos VarInt truncats (sense byte terminador) es descodifiquen parcialment i retornen un error indicant el desplaçament. Els nombres negatius no es poden codificar directament — fes servir primer la codificació ZigZag. Evita copiar bytes VarInt de captures de pantalla on el farciment de Base64 pot haver estat eliminat, ja que la manca de farciment altera els límits dels bytes.
Quan utilitzar aquesta eina vs codi
Utilitza l’eina del navegador per a una inspecció ràpida dels bytes wire de Protobuf durant la depuració o mentre escrius proves. Per a la codificació en producció, fes servir biblioteques VarInt natives del llenguatge (`varint` a npm, `binary.varint` a encoding/binary de Go, `decode_varint` a google.protobuf.internal de Python), que gestionen streaming, recuperació d’errors i transformació ZigZag en una sola crida.