DevToys Web Pro iconDevToys Web ProBlogs
Novērtējiet mūs:
Izmēģiniet pārlūkprogrammas paplašinājumu:

VarInt kodētājs / dekodētājs

12 baiti
Režīms

Decimālās vērtības

  • VarInt izvade

  • Tehniskā informācija

    Kā darbojas VarInt kodētājs / dekodētājs

    Ko rīks dara

    VarInt rīks kodē neparakstītus veselus skaitļus kā Protobuf stila LEB128 mainīga garuma veselus skaitļus un dekodē bināras VarInt plūsmas atpakaļ uz veselu skaitļu sarakstiem. Katrs lielums tiek kodēts 1–10 baitos atkarībā no tā lieluma, un katra baita augstākais bits norāda, vai seko vēl baiti. Izvade tiek parādīta kā baitu masīvs, heksadecimāli vai Base64, lai to būtu viegli iegult testos un fiksētajos datos.

    Biežākie izstrādātāju lietošanas gadījumi

    Inženieri, kas atkļūdo Protobuf wire-format slodzes, izmanto VarInt kodēšanu/dekodēšanu, lai pārbaudītu lauku tagus un neparakstītu veselo skaitļu lauku vērtības, nepalaižot pilnu Protobuf izpildlaiku. Bitcoin un citu kriptovalūtu izstrādātāji parsē VarInt kodētus skriptu garumus un transakciju skaitus. Rīks ir noderīgs arī, veicot reverso inženieriju pielāgotiem bināriem protokoliem, kas izmanto LEB128 tā kompaktuma dēļ maziem skaitļiem.

    Datu formāti, tipi vai varianti

    LEB128 (Little-Endian Base 128) katrā baitā izvada 7 datu bitus, bet visnozīmīgākais bits darbojas kā turpinājuma karodziņš. Mazi skaitļi (0–127) izmanto vienu baitu; skaitļi līdz 16 383 izmanto divus baitus; un tā tālāk. Ievade pieņem decimālus skaitļus, kas atdalīti ar atstarpēm, komatiem vai jaunām rindām. Izvade ir pieejama heksadecimālā, Base64 un neapstrādāta baitu masīva notācijā. Parakstītus veselus skaitļus var kodēt, vispirms pielietojot ZigZag transformāciju (n << 1) ^ (n >> 31).

    Biežākās kļūdas un robežgadījumi

    JavaScript skaitļu precizitāte beidzas pie 2^53 − 1; vērtības virs Number.MAX_SAFE_INTEGER nevar droši kodēt. Saīsinātas VarInt plūsmas (trūkst terminatora baita) dekodējas daļēji un atgriež kļūdu, norādot nobīdi. Negatīvus skaitļus nevar kodēt tieši — vispirms izmantojiet ZigZag kodēšanu. Izvairieties kopēt VarInt baitus no ekrānuzņēmumiem, kuros Base64 aizpildījums var būt noņemts, jo trūkstošs aizpildījums maina baitu robežas.

    Kad izmantot šo rīku, nevis kodu

    Izmantojiet pārlūka rīku ātrai Protobuf wire baitu pārbaudei atkļūdošanas laikā vai rakstot testus. Ražošanas kodēšanai izmantojiet valodai raksturīgās VarInt bibliotēkas (`varint` npm, `binary.varint` Go encoding/binary, `decode_varint` Python google.protobuf.internal), kas vienā izsaukumā apstrādā straumēšanu, kļūdu atkopšanu un ZigZag transformāciju.