VarInt Encoder / Decoder
Mga decimal na halaga
Output ng VarInt
Mga teknikal na detalye
Paano Gumagana ang VarInt Encoder / Decoder
Ano ang Ginagawa ng Tool
Ini-encode ng VarInt tool ang mga unsigned integer bilang Protobuf-style LEB128 variable-length integer at dini-decode ang mga binary VarInt stream pabalik sa mga listahan ng integer. Ang bawat value ay na-e-encode sa 1–10 byte depende sa laki nito, kung saan ang high bit ng bawat byte ang nagsasabi kung may susunod pang mga byte. Ipinapakita ang output bilang byte array, hexadecimal, o Base64 para madaling ma-embed sa mga test at fixture.
Mga Karaniwang Gamit ng Developer
Ginagamit ng mga engineer na nagde-debug ng Protobuf wire-format payload ang VarInt encode/decode para masuri ang mga field tag at unsigned integer field value nang hindi nagpapatakbo ng buong Protobuf runtime. Ang mga developer ng Bitcoin at iba pang cryptocurrency ay nagpa-parse ng mga VarInt-encoded na haba ng script at bilang ng transaksyon. Kapaki-pakinabang din ang tool kapag nagre-reverse-engineer ng mga custom binary protocol na gumagamit ng LEB128 dahil compact ito para sa maliliit na numero.
Mga Format, Uri, o Variant ng Data
Ang LEB128 (Little-Endian Base 128) ay naglalabas ng 7 payload bit bawat byte, at ang most significant bit ay nagsisilbing continuation flag. Ang maliliit na numero (0–127) ay gumagamit ng isang byte; ang mga numerong hanggang 16,383 ay gumagamit ng dalawang byte; at iba pa. Tumatanggap ang input ng mga decimal na numero na pinaghihiwalay ng whitespace, kuwit, o newline. Available ang output sa hexadecimal, Base64, at raw byte array notation. Maaaring i-encode ang mga signed integer sa pamamagitan ng unang pag-apply ng ZigZag transformation (n << 1) ^ (n >> 31).
Mga Karaniwang Pagkakamali at Edge Case
Ang precision ng JavaScript number ay hanggang 2^53 − 1; ang mga value na mas mataas sa Number.MAX_SAFE_INTEGER ay hindi ligtas i-encode. Ang mga truncated na VarInt stream (kulang ang terminator byte) ay bahagyang dini-decode at magbabalik ng error na nagsasaad ng offset. Hindi maaaring i-encode nang direkta ang mga negatibong numero — gamitin muna ang ZigZag encoding. Iwasang kopyahin ang mga VarInt byte mula sa mga screenshot kung saan maaaring natanggal ang Base64 padding, dahil binabago ng nawawalang padding ang mga hangganan ng byte.
Kailan Gagamitin ang Tool na Ito kumpara sa Code
Gamitin ang browser tool para sa mabilisang inspeksyon ng mga Protobuf wire byte habang nagde-debug o habang nagsusulat ng mga test. Para sa production encoding, gumamit ng mga language-native na VarInt library (`varint` sa npm, `binary.varint` sa encoding/binary ng Go, `decode_varint` sa google.protobuf.internal ng Python) na humahawak ng streaming, error recovery, at ZigZag transformation sa iisang tawag.