DevToys Web Pro iconDevToys Web ProTinklaraštis
Įvertinkite mus:
Išbandykite naršyklės plėtinį:

VarInt enkoderis / dekoderis

12 baitai
Režimas

Dešimtainės reikšmės

  • VarInt išvestis

  • Techninė informacija

    Kaip veikia VarInt koduotuvas / dekoduotuvas

    Ką daro įrankis

    VarInt įrankis koduoja nepasirašytus sveikuosius skaičius kaip Protobuf stiliaus LEB128 kintamo ilgio sveikuosius skaičius ir dekoduoja dvejetainius VarInt srautus atgal į sveikųjų skaičių sąrašus. Kiekviena reikšmė koduojama 1–10 baitų, priklausomai nuo dydžio, o kiekvieno baito aukščiausias bitas nurodo, ar seka daugiau baitų. Išvestis rodoma kaip baitų masyvas, šešioliktainė arba Base64 forma, kad būtų patogu įterpti į testus ir fikstūras.

    Dažniausi kūrėjų naudojimo atvejai

    Inžinieriai, derinantys Protobuf wire-format duomenų paketus, naudoja VarInt kodavimą/dekodavimą, kad galėtų peržiūrėti laukų žymas ir nepasirašytų sveikųjų laukų reikšmes neįjungdami pilnos Protobuf vykdymo aplinkos. Bitcoin ir kitų kriptovaliutų kūrėjai analizuoja VarInt koduotus skriptų ilgius ir transakcijų skaičius. Įrankis taip pat naudingas atvirkštine inžinerija analizuojant pasirinktinius dvejetainius protokolus, kurie naudoja LEB128 dėl jo kompaktiškumo mažiems skaičiams.

    Duomenų formatai, tipai arba variantai

    LEB128 (Little-Endian Base 128) kiekviename baite išveda 7 naudingus bitus, o reikšmingiausias bitas veikia kaip tęstinumo vėliavėlė. Maži skaičiai (0–127) naudoja vieną baitą; skaičiai iki 16 383 naudoja du baitus; ir t. t. Įvestys priima dešimtainius skaičius, atskirtus tarpais, kableliais arba naujomis eilutėmis. Išvestys pateikiamos šešioliktainiu, Base64 ir neapdoroto baitų masyvo žymėjimu. Pasirašytus sveikuosius skaičius galima koduoti pirmiausia pritaikius ZigZag transformaciją (n << 1) ^ (n >> 31).

    Dažniausios klaidos ir kraštiniai atvejai

    JavaScript skaičių tikslumas baigiasi ties 2^53 − 1; reikšmių, didesnių nei Number.MAX_SAFE_INTEGER, saugiai užkoduoti negalima. Nukirsti VarInt srautai (trūksta terminatoriaus baito) dekoduojami dalinai ir grąžina klaidą, nurodančią poslinkį. Neigiamų skaičių tiesiogiai užkoduoti negalima — pirmiausia naudokite ZigZag kodavimą. Venkite kopijuoti VarInt baitus iš ekrano nuotraukų, kur Base64 užpildymas (padding) galėjo būti pašalintas, nes trūkstamas užpildymas pakeičia baitų ribas.

    Kada naudoti šį įrankį, o kada kodą

    Naudokite naršyklės įrankį greitai peržiūrėti Protobuf wire baitus derinant arba rašant testus. Produkciniam kodavimui naudokite kalbai būdingas VarInt bibliotekas (`varint` npm, `binary.varint` Go encoding/binary, `decode_varint` Python google.protobuf.internal), kurios vienu iškvietimu tvarko srautų apdorojimą, klaidų atkūrimą ir ZigZag transformaciją.