DevToys Web Pro iconDevToys Web ProBlog
Beri nilai kami:
Coba ekstensi browser:

Enkoder / Dekoder VarInt

12 byte
Mode

Nilai desimal

  • Output VarInt

  • Detail teknis

    Cara Kerja Encoder / Decoder VarInt

    Apa yang Dilakukan Alat Ini

    Alat VarInt mengenkode bilangan bulat tak bertanda sebagai bilangan bulat panjang-variabel LEB128 bergaya Protobuf dan mendekode stream VarInt biner kembali menjadi daftar bilangan bulat. Setiap nilai dienkode dalam 1–10 byte tergantung besarnya, dengan bit tinggi pada setiap byte menandakan apakah masih ada byte berikutnya. Output ditampilkan sebagai array byte, heksadesimal, atau Base64 untuk memudahkan penyematan dalam tes dan fixture.

    Kasus Penggunaan Umum untuk Developer

    Engineer yang melakukan debugging payload wire-format Protobuf menggunakan encode/decode VarInt untuk memeriksa tag field dan nilai field bilangan bulat tak bertanda tanpa menjalankan runtime Protobuf penuh. Pengembang Bitcoin dan cryptocurrency lainnya mengurai panjang skrip dan jumlah transaksi yang dienkode VarInt. Alat ini juga membantu saat melakukan reverse-engineering protokol biner kustom yang mengadopsi LEB128 karena kekompakannya untuk angka kecil.

    Format Data, Tipe, atau Varian

    LEB128 (Little-Endian Base 128) mengeluarkan 7 bit payload per byte dengan bit paling signifikan bertindak sebagai flag kelanjutan. Angka kecil (0–127) menggunakan satu byte; angka hingga 16.383 menggunakan dua byte; dan seterusnya. Input menerima angka desimal yang dipisahkan oleh spasi, koma, atau baris baru. Output tersedia dalam heksadesimal, Base64, dan notasi array byte mentah. Bilangan bulat bertanda dapat dienkode dengan terlebih dahulu menerapkan transformasi ZigZag (n << 1) ^ (n >> 31).

    Kesalahan Umum dan Kasus Tepi

    Presisi angka JavaScript mentok di 2^53 − 1; nilai di atas Number.MAX_SAFE_INTEGER tidak dapat dienkode dengan aman. Stream VarInt yang terpotong (byte terminator hilang) akan terdekode sebagian dan mengembalikan error yang menunjukkan offset. Angka negatif tidak dapat dienkode secara langsung — gunakan encoding ZigZag terlebih dahulu. Hindari menyalin byte VarInt dari tangkapan layar di mana padding Base64 mungkin telah dihapus, karena padding yang hilang mengubah batas byte.

    Kapan Menggunakan Alat Ini vs Kode

    Gunakan alat browser untuk inspeksi cepat byte wire Protobuf saat debugging atau saat menulis tes. Untuk encoding produksi, gunakan pustaka VarInt native bahasa (`varint` di npm, `binary.varint` di encoding/binary Go, `decode_varint` di google.protobuf.internal Python) yang menangani streaming, pemulihan error, dan transformasi ZigZag dalam satu pemanggilan.