VarInt-encoder / -decoder
Decimale waarden
VarInt-uitvoer
Technische details
Hoe de VarInt-encoder/-decoder werkt
Wat de tool doet
De VarInt-tool codeert unsigned integers als Protobuf-achtige LEB128-integers met variabele lengte en decodeert binaire VarInt-streams terug naar lijsten met integers. Elke waarde wordt gecodeerd in 1–10 bytes afhankelijk van de grootte, waarbij de hoogste bit van elke byte aangeeft of er nog meer bytes volgen. De uitvoer wordt weergegeven als een byte-array, hexadecimaal of Base64 voor eenvoudig opnemen in tests en fixtures.
Veelvoorkomende use-cases voor ontwikkelaars
Engineers die Protobuf wire-format-payloads debuggen gebruiken VarInt encode/decode om veldtags en unsigned-integer-veldwaarden te inspecteren zonder een volledige Protobuf-runtime op te starten. Bitcoin- en andere cryptocurrency-ontwikkelaars parsen VarInt-gecodeerde scriptlengtes en transactietellingen. De tool is ook handig bij het reverse-engineeren van aangepaste binaire protocollen die LEB128 gebruiken vanwege de compactheid voor kleine getallen.
Gegevensformaten, typen of varianten
LEB128 (Little-Endian Base 128) levert 7 payloadbits per byte, waarbij de meest significante bit fungeert als continuatievlag. Kleine getallen (0–127) gebruiken één byte; getallen tot 16.383 gebruiken twee bytes; enzovoort. Invoer accepteert decimale getallen gescheiden door witruimte, komma's of nieuwe regels. Uitvoer is beschikbaar in hexadecimaal, Base64 en ruwe byte-array-notatie. Gesigneerde integers kunnen worden gecodeerd door eerst ZigZag-transformatie toe te passen (n << 1) ^ (n >> 31).
Veelvoorkomende valkuilen en edge-cases
De precisie van JavaScript-nummers gaat tot 2^53 − 1; waarden boven Number.MAX_SAFE_INTEGER kunnen niet veilig worden gecodeerd. Afgekorte VarInt-streams (ontbrekende terminatorbyte) decoderen gedeeltelijk en geven een fout terug die de offset aangeeft. Negatieve getallen kunnen niet direct worden gecodeerd — gebruik eerst ZigZag-encoding. Vermijd het kopiëren van VarInt-bytes uit screenshots waarbij Base64-padding mogelijk is verwijderd, omdat ontbrekende padding bytegrenzen verandert.
Wanneer je deze tool gebruikt vs code
Gebruik de browsertool voor snelle inspectie van Protobuf-wire-bytes tijdens debugging of bij het schrijven van tests. Voor productie-encoding gebruik je taal-native VarInt-bibliotheken (`varint` op npm, `binary.varint` in Go's encoding/binary, `decode_varint` in Python's google.protobuf.internal) die streaming, foutherstel en ZigZag-transformatie in één aanroep afhandelen.