DevToys Web Pro iconDevToys Web ProBlogu
Tupatie ukadiriaji:
Jaribu kiendelezi cha kivinjari:

Kisimbaji / Kisimbuaji cha VarInt

12 baiti
Hali

Thamani za desimali

  • Matokeo ya VarInt

  • Maelezo ya kiufundi

    Jinsi Kisimbaji / Kisimbuaji cha VarInt Kinavyofanya Kazi

    Zana Hii Hufanya Nini

    Zana ya VarInt husimba nambari kamili zisizo na ishara kama nambari za urefu unaobadilika za LEB128 mtindo wa Protobuf na husimbua mitiririko ya VarInt ya baiti kurudi kwenye orodha za nambari kamili. Kila thamani husimbwa katika baiti 1–10 kulingana na ukubwa wake, huku biti ya juu ya kila baiti ikionyesha kama baiti zaidi zinafuata. Matokeo huonyeshwa kama safu ya baiti, heksadesimali, au Base64 kwa urahisi wa kuyapachika kwenye majaribio na fixtures.

    Matumizi ya Kawaida kwa Wasanidi

    Wahandisi wanaotatua hitilafu za payload za wire-format za Protobuf hutumia usimbaji/usimbuaji wa VarInt kukagua field tags na thamani za sehemu za nambari kamili zisizo na ishara bila kuanzisha runtime kamili ya Protobuf. Watengenezaji wa Bitcoin na sarafu nyingine za kidijitali huchanganua urefu wa script na hesabu za miamala zilizosimbwa kwa VarInt. Zana hii pia husaidia wakati wa kufanya reverse-engineering ya itifaki maalum za baiti zinazotumia LEB128 kwa sababu ya ukubwa wake mdogo kwa nambari ndogo.

    Miundo ya Data, Aina, au Lahaja

    LEB128 (Little-Endian Base 128) hutoa biti 7 za mzigo kwa kila baiti huku biti iliyo muhimu zaidi ikifanya kazi kama bendera ya kuendelea. Nambari ndogo (0–127) hutumia baiti moja; nambari hadi 16,383 hutumia baiti mbili; na kadhalika. Ingizo hukubali nambari za desimali zilizotenganishwa na nafasi, koma, au mistari mipya. Matokeo yanapatikana katika heksadesimali, Base64, na nukuu ya safu ya baiti ghafi. Nambari kamili zenye ishara zinaweza kusimbwa kwa kwanza kutumia mabadiliko ya ZigZag (n << 1) ^ (n >> 31).

    Mitego ya Kawaida na Matukio ya Pembeni

    Usahihi wa nambari za JavaScript huishia kwenye 2^53 − 1; thamani zilizo juu ya Number.MAX_SAFE_INTEGER haziwezi kusimbwa kwa usalama. Mitiririko ya VarInt iliyokatika (baiti ya mwisho ya kumalizia ikikosekana) husimbuliwa kwa sehemu na kurudisha hitilafu inayoonyesha offset. Nambari hasi haziwezi kusimbwa moja kwa moja — tumia usimbaji wa ZigZag kwanza. Epuka kunakili baiti za VarInt kutoka kwenye picha za skrini ambapo padding ya Base64 inaweza kuwa imeondolewa, kwa kuwa padding inayokosekana hubadilisha mipaka ya baiti.

    Wakati wa Kutumia Zana Hii dhidi ya Msimbo

    Tumia zana ya kivinjari kwa ukaguzi wa haraka wa baiti za Protobuf wire wakati wa utatuzi wa hitilafu au unapoandika majaribio. Kwa usimbaji wa uzalishaji, tumia maktaba za VarInt za lugha husika (`varint` kwenye npm, `binary.varint` katika encoding/binary ya Go, `decode_varint` katika google.protobuf.internal ya Python) ambazo hushughulikia utiririshaji, urejeshaji wa hitilafu, na mabadiliko ya ZigZag kwa mwito mmoja.