VarInt Kodlayıcı / Kod Çözücü
Ondalık değerler
VarInt çıktısı
Teknik ayrıntılar
VarInt Kodlayıcı / Kod Çözücü Nasıl Çalışır
Araç Ne Yapar
VarInt aracı, işaretsiz tamsayıları Protobuf tarzı LEB128 değişken uzunluklu tamsayılar olarak kodlar ve ikili VarInt akışlarını tekrar tamsayı listelerine çözer. Her değer, büyüklüğüne bağlı olarak 1–10 baytla kodlanır; her baytın en yüksek biti, daha fazla baytın gelip gelmeyeceğini belirtir. Çıktı, testlere ve fixture’lara kolayca gömmek için bayt dizisi, onaltılık veya Base64 olarak gösterilir.
Yaygın Geliştirici Kullanım Senaryoları
Protobuf wire-format yüklerini hata ayıklayan mühendisler, tam bir Protobuf çalışma zamanı kurmadan alan etiketlerini ve işaretsiz tamsayı alan değerlerini incelemek için VarInt kodlama/kod çözmeyi kullanır. Bitcoin ve diğer kripto para geliştiricileri, VarInt ile kodlanmış betik uzunluklarını ve işlem sayılarını ayrıştırır. Araç, küçük sayılar için kompaktlığı nedeniyle LEB128’i benimseyen özel ikili protokolleri tersine mühendislik yaparken de faydalıdır.
Veri Biçimleri, Türleri veya Varyantlar
LEB128 (Little-Endian Base 128), bayt başına 7 yük bitini üretir; en anlamlı bit devam bayrağı olarak görev yapar. Küçük sayılar (0–127) tek bayt kullanır; 16.383’e kadar olan sayılar iki bayt kullanır; ve böyle devam eder. Girdiler, boşluk, virgül veya yeni satırla ayrılmış ondalık sayıları kabul eder. Çıktılar onaltılık, Base64 ve ham bayt dizisi gösteriminde sunulur. İşaretli tamsayılar, önce ZigZag dönüşümü (n << 1) ^ (n >> 31) uygulanarak kodlanabilir.
Yaygın Hatalar ve Sınır Durumları
JavaScript sayı hassasiyeti 2^53 − 1’de biter; Number.MAX_SAFE_INTEGER üzerindeki değerler güvenli şekilde kodlanamaz. Kırpılmış VarInt akışları (sonlandırıcı bayt eksik) kısmen çözülür ve ofseti belirten bir hata döndürür. Negatif sayılar doğrudan kodlanamaz — önce ZigZag kodlaması kullanın. Base64 dolgusunun kaldırılmış olabileceği ekran görüntülerinden VarInt baytlarını kopyalamaktan kaçının; eksik dolgu bayt sınırlarını değiştirir.
Bu Aracı Ne Zaman Kullanmalı, Ne Zaman Kod Yazmalı
Hata ayıklama sırasında veya test yazarken Protobuf wire baytlarını hızlıca incelemek için tarayıcı aracını kullanın. Üretimde kodlama için, akış (streaming), hata toparlama ve ZigZag dönüşümünü tek çağrıda ele alan dilin yerel VarInt kütüphanelerini kullanın (npm’de `varint`, Go’nun encoding/binary paketinde `binary.varint`, Python’un google.protobuf.internal içinde `decode_varint`).