DevToys Web Pro iconDevToys Web ProBlogi
Hinda meid:
Proovi brauserilaiendust:

VarInt enkooder / dekooder

12 baidid
Režiim

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.