DevToys Web Pro iconDevToys Web ProBlog
Valora'ns:
Prova l'extensió del navegador:

Codificador / Descodificador VarInt

12 bytes
Mode

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.