Kisimbaji / Kisimbuaji cha VarInt
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.