VarInt-Kodierer / -Dekodierer
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.