DevToys Web Pro iconDevToys Web ProBlogi
Arvostele meidät:
Kokeile selainlaajennusta:

VarInt-enkooderi / -dekooderi

12 tavua
Tila

Desimaaliarvot

  • VarInt-tulos

  • Tekniset tiedot

    Miten VarInt-kooderi / -dekooderi toimii

    Mitä työkalu tekee

    VarInt-työkalu koodaa etumerkittömät kokonaisluvut Protobuf-tyylisinä LEB128-muuttuvapituuksisina kokonaislukuina ja dekoodaa binääriset VarInt-virrat takaisin kokonaislukulistoiksi. Jokainen arvo koodataan 1–10 tavuun suuruusluokasta riippuen, ja jokaisen tavun ylin bitti kertoo, seuraako lisää tavuja. Tuloste näytetään tavutaulukkona, heksana tai Base64-muodossa, jotta se on helppo upottaa testeihin ja fixtureihin.

    Yleiset kehittäjien käyttötapaukset

    Protobufin wire-format -kuormia debuggaavat insinöörit käyttävät VarInt-koodausta/dekoodausta tarkastaakseen kenttätagit ja etumerkittömien kokonaislukukenttien arvot ilman, että tarvitsee käynnistää koko Protobuf-ajonaika. Bitcoin- ja muut kryptovaluuttakehittäjät jäsentävät VarInt-koodattuja skriptien pituuksia ja transaktiomääriä. Työkalu on hyödyllinen myös käänteismallinnettaessa mukautettuja binääriprotokollia, jotka käyttävät LEB128:aa sen tiiviyden vuoksi pienille luvuille.

    Tietomuodot, tyypit tai variantit

    LEB128 (Little-Endian Base 128) tuottaa 7 hyötybittiä per tavu, ja merkitsevin bitti toimii jatkolippuna. Pienet luvut (0–127) käyttävät yhden tavun; luvut 16 383:een asti käyttävät kaksi tavua; ja niin edelleen. Syötteet hyväksyvät desimaalilukuja, jotka on erotettu välilyönneillä, pilkuilla tai rivinvaihdoilla. Tulosteet ovat saatavilla heksana, Base64-muodossa ja raakana tavutaulukkomerkintänä. Etumerkilliset kokonaisluvut voidaan koodata soveltamalla ensin ZigZag-muunnosta (n << 1) ^ (n >> 31).

    Yleiset sudenkuopat ja reunatapaukset

    JavaScriptin lukutarkkuus yltää arvoon 2^53 − 1; Number.MAX_SAFE_INTEGER:n ylittäviä arvoja ei voi koodata turvallisesti. Katkaistut VarInt-virrat (puuttuva päättävä tavu) dekoodautuvat osittain ja palauttavat virheen, joka ilmoittaa siirtymän. Negatiivisia lukuja ei voi koodata suoraan — käytä ensin ZigZag-koodausta. Vältä VarInt-tavujen kopioimista kuvakaappauksista, joissa Base64-täyte (=) on saatettu poistaa, koska puuttuva täyte muuttaa tavurajoja.

    Milloin käyttää tätä työkalua vs. koodia

    Käytä selainpohjaista työkalua Protobufin wire-tavujen nopeaan tarkasteluun debuggaamisen aikana tai testejä kirjoittaessa. Tuotantokoodauksessa käytä kielikohtaisia VarInt-kirjastoja (`varint` npm:ssä, `binary.varint` Go:n encoding/binary-paketissa, `decode_varint` Pythonin google.protobuf.internal-moduulissa), jotka hoitavat suoratoiston, virheistä palautumisen ja ZigZag-muunnoksen yhdellä kutsulla.