VarInt enkooder / dekooder
Kümnendväärtused
VarInt väljund
Tehnilised üksikasjad
Kuidas VarInt kodeerija / dekodeerija töötab
Mida tööriist teeb
VarInt-tööriist kodeerib märgita täisarvud Protobuf-stiilis LEB128 muutuva pikkusega täisarvudeks ja dekodeerib binaarsed VarInt-vood tagasi täisarvude loenditeks. Iga väärtus kodeeritakse 1–10 baidiga sõltuvalt suurusest, kusjuures iga baidi kõrgeim bitt näitab, kas järgnevad veel baidid. Väljund kuvatakse baidimassiivina, kuueteistkümnendsüsteemis või Base64-na, et seda oleks lihtne testidesse ja fikstuuridesse lisada.
Levinud kasutusjuhtumid arendajatele
Insenerid, kes siluvad Protobufi wire-format payload'e, kasutavad VarInt kodeerimist/dekodeerimist, et uurida väljatäge ja märgita täisarvuväljade väärtusi ilma täielikku Protobufi runtime'i käivitamata. Bitcoini ja teiste krüptorahade arendajad parsivad VarInt-kodeeritud skriptipikkusi ja tehingute arve. Tööriist on abiks ka kohandatud binaarprotokollide pöördprojekteerimisel, mis kasutavad LEB128-t selle kompaktsuse tõttu väikeste arvude puhul.
Andmevormingud, tüübid või variandid
LEB128 (Little-Endian Base 128) väljastab 7 kasulikku bitti baidi kohta, kusjuures kõige olulisem bitt toimib jätkulipuna. Väikesed arvud (0–127) kasutavad ühte baiti; kuni 16 383 kasutavad kahte baiti; ja nii edasi. Sisendid aktsepteerivad tühikute, komade või reavahetustega eraldatud kümnendarve. Väljundid on saadaval kuueteistkümnendsüsteemis, Base64-na ja toore baidimassiivi notatsioonina. Märgiga täisarve saab kodeerida, rakendades esmalt ZigZag-teisenduse (n << 1) ^ (n >> 31).
Levinud komistuskivid ja erijuhud
JavaScripti arvutäpsus ulatub kuni 2^53 − 1; väärtusi üle Number.MAX_SAFE_INTEGER ei saa turvaliselt kodeerida. Kärbitud VarInt-vood (puuduv lõpetav bait) dekodeeruvad osaliselt ja tagastavad vea, mis näitab nihet. Negatiivseid arve ei saa otse kodeerida — kasuta esmalt ZigZag-kodeerimist. Väldi VarInt-baitide kopeerimist ekraanipiltidelt, kus Base64 täitmine võib olla eemaldatud, sest puuduv täitmine muudab baidipiire.
Millal kasutada seda tööriista vs koodi
Kasuta brauseritööriista Protobufi wire-baitide kiireks kontrolliks silumise ajal või teste kirjutades. Tootmiskodeerimiseks kasuta keelepõhiseid VarInt-teeke (`varint` npm-is, `binary.varint` Go encoding/binary paketis, `decode_varint` Pythonis google.protobuf.internal), mis käsitlevad voogedastust, vigadest taastumist ja ZigZag-teisendust ühe väljakutsega.