DevToys Web Pro iconDevToys Web ProBlog
Bewerten Sie uns:
Browser-Erweiterung ausprobieren:

VarInt-Kodierer / -Dekodierer

12 Bytes
Modus

Dezimalwerte

  • VarInt-Ausgabe

  • Technische Details

    So funktioniert der VarInt-Encoder / -Decoder

    Was das Tool macht

    Das VarInt-Tool kodiert vorzeichenlose Ganzzahlen als Protobuf-artige LEB128-Integer variabler Länge und dekodiert binäre VarInt-Streams zurück in Integer-Listen. Jeder Wert wird je nach Größe in 1–10 Bytes kodiert, wobei das höchste Bit jedes Bytes signalisiert, ob weitere Bytes folgen. Die Ausgabe wird als Byte-Array, Hexadezimal oder Base64 angezeigt, um sie leicht in Tests und Fixtures einzubetten.

    Häufige Anwendungsfälle für Entwickler

    Ingenieure, die Protobuf-Wire-Format-Payloads debuggen, verwenden VarInt Encode/Decode, um Field-Tags und vorzeichenlose Integer-Feldwerte zu inspizieren, ohne eine vollständige Protobuf-Runtime zu starten. Bitcoin- und andere Kryptowährungsentwickler parsen VarInt-kodierte Skriptlängen und Transaktionsanzahlen. Das Tool ist auch hilfreich beim Reverse Engineering benutzerdefinierter binärer Protokolle, die LEB128 wegen seiner Kompaktheit für kleine Zahlen übernehmen.

    Datenformate, Typen oder Varianten

    LEB128 (Little-Endian Base 128) gibt pro Byte 7 Nutzbits aus, wobei das höchstwertige Bit als Fortsetzungs-Flag dient. Kleine Zahlen (0–127) verwenden ein einzelnes Byte; Zahlen bis 16.383 verwenden zwei Bytes; und so weiter. Eingaben akzeptieren Dezimalzahlen, getrennt durch Leerzeichen, Kommas oder Zeilenumbrüche. Ausgaben sind in Hexadezimal, Base64 und in roher Byte-Array-Notation verfügbar. Vorzeichenbehaftete Ganzzahlen können kodiert werden, indem zuerst eine ZigZag-Transformation angewendet wird (n << 1) ^ (n >> 31).

    Häufige Fallstricke und Sonderfälle

    Die JavaScript-Zahlenpräzision endet bei 2^53 − 1; Werte oberhalb von Number.MAX_SAFE_INTEGER können nicht sicher kodiert werden. Abgeschnittene VarInt-Streams (fehlendes Terminator-Byte) werden nur teilweise dekodiert und liefern einen Fehler, der den Offset angibt. Negative Zahlen können nicht direkt kodiert werden — verwenden Sie zuerst ZigZag-Encoding. Vermeiden Sie es, VarInt-Bytes aus Screenshots zu kopieren, bei denen Base64-Padding möglicherweise entfernt wurde, da fehlendes Padding die Byte-Grenzen verändert.

    Wann dieses Tool statt Code verwenden

    Nutzen Sie das Browser-Tool für eine schnelle Inspektion von Protobuf-Wire-Bytes beim Debugging oder beim Schreiben von Tests. Für Produktions-Encoding verwenden Sie sprachspezifische VarInt-Bibliotheken (`varint` auf npm, `binary.varint` in Go's encoding/binary, `decode_varint` in Python's google.protobuf.internal), die Streaming, Fehlerbehandlung und ZigZag-Transformation in einem einzigen Aufruf abdecken.