Pengekod / Penyahkod VarInt
Nilai perpuluhan
Output VarInt
Butiran teknikal
Cara Pengekod / Penyahkod VarInt Berfungsi
Apa yang Alat Ini Lakukan
Alat VarInt mengekod integer tak bertanda sebagai integer panjang berubah gaya LEB128 ala Protobuf dan menyahkod aliran VarInt binari kembali kepada senarai integer. Setiap nilai dikodkan dalam 1–10 bait bergantung pada magnitudnya, dengan bit tinggi setiap bait menandakan sama ada lebih banyak bait menyusul. Output dipaparkan sebagai tatasusunan bait, heksadesimal atau Base64 untuk memudahkan penyematan dalam ujian dan fixtur.
Kes Penggunaan Pembangun yang Lazim
Jurutera yang menyahpepijat muatan format wayar Protobuf menggunakan pengekodan/penyahkodan VarInt untuk memeriksa tag medan dan nilai medan integer tak bertanda tanpa menjalankan runtime Protobuf penuh. Pembangun Bitcoin dan mata wang kripto lain menghurai panjang skrip dan kiraan transaksi yang dikodkan VarInt. Alat ini juga membantu apabila melakukan kejuruteraan songsang protokol binari tersuai yang menggunakan LEB128 kerana kekompakannya untuk nombor kecil.
Format Data, Jenis, atau Varian
LEB128 (Little-Endian Base 128) mengeluarkan 7 bit muatan per bait dengan bit paling signifikan bertindak sebagai bendera kesinambungan. Nombor kecil (0–127) menggunakan satu bait; nombor sehingga 16,383 menggunakan dua bait; dan seterusnya. Input menerima nombor perpuluhan yang dipisahkan oleh ruang putih, koma atau baris baharu. Output tersedia dalam heksadesimal, Base64 dan notasi tatasusunan bait mentah. Integer bertanda boleh dikodkan dengan terlebih dahulu menggunakan transformasi ZigZag (n << 1) ^ (n >> 31).
Perangkap Lazim dan Kes Tepi
Ketepatan nombor JavaScript terhad pada 2^53 − 1; nilai melebihi Number.MAX_SAFE_INTEGER tidak boleh dikodkan dengan selamat. Aliran VarInt yang terpotong (bait penamat hilang) akan dinyahkod sebahagian dan mengembalikan ralat yang menunjukkan ofset. Nombor negatif tidak boleh dikodkan secara langsung — gunakan pengekodan ZigZag terlebih dahulu. Elakkan menyalin bait VarInt daripada tangkapan skrin di mana padding Base64 mungkin telah dibuang, kerana padding yang hilang mengubah sempadan bait.
Bila Perlu Menggunakan Alat Ini Berbanding Kod
Gunakan alat pelayar untuk pemeriksaan pantas bait wayar Protobuf semasa penyahpepijatan atau ketika menulis ujian. Untuk pengekodan produksi, gunakan pustaka VarInt asli bahasa (`varint` di npm, `binary.varint` dalam encoding/binary Go, `decode_varint` dalam google.protobuf.internal Python) yang mengendalikan penstriman, pemulihan ralat dan transformasi ZigZag dalam satu panggilan.