DevToys Web Pro iconDevToys Web Proબ્લોગ
અમને રેટ કરો:
બ્રાઉઝર એક્સ્ટેન્શન અજમાવો:

VarInt એન્કોડર / ડિકોડર

12 બાઇટ્સ
મોડ

દશાંશ મૂલ્યો

  • VarInt આઉટપુટ

  • તકનિકી વિગતો

    VarInt એન્કોડર / ડિકોડર કેવી રીતે કામ કરે છે

    આ ટૂલ શું કરે છે

    VarInt ટૂલ unsigned integers ને Protobuf-સ્ટાઇલ LEB128 variable-length integers તરીકે એન્કોડ કરે છે અને બાઇનરી VarInt સ્ટ્રીમ્સને પાછા integer લિસ્ટ્સમાં ડિકોડ કરે છે. દરેક મૂલ્ય તેની magnitude પર આધાર રાખીને 1–10 બાઇટ્સમાં એન્કોડ થાય છે, જેમાં દરેક બાઇટનો high bit વધુ બાઇટ્સ અનુસરે છે કે નહીં તે સૂચવે છે. આઉટપુટને byte array, hexadecimal, અથવા Base64 તરીકે બતાવવામાં આવે છે જેથી ટેસ્ટ્સ અને fixtures માં સરળતાથી એમ્બેડ કરી શકાય.

    ડેવલપર્સ માટેના સામાન્ય ઉપયોગ કેસિસ

    Protobuf wire-format payloads ડિબગ કરતા એન્જિનિયર્સ સંપૂર્ણ Protobuf runtime ચલાવ્યા વિના ફીલ્ડ ટૅગ્સ અને unsigned integer ફીલ્ડ મૂલ્યોનું નિરીક્ષણ કરવા VarInt encode/decode વાપરે છે. Bitcoin અને અન્ય ક્રિપ્ટોકરન્સી ડેવલપર્સ VarInt-એન્કોડેડ સ્ક્રિપ્ટ લંબાઈઓ અને ટ્રાન્ઝેક્શન કાઉન્ટ્સ પાર્સ કરે છે. નાના નંબર્સ માટે તેની કોમ્પેક્ટનેસને કારણે LEB128 અપનાવતા કસ્ટમ બાઇનરી પ્રોટોકોલ્સને રિવર્સ-એન્જિનિયર કરતી વખતે પણ આ ટૂલ મદદરૂપ છે.

    ડેટા ફોર્મેટ્સ, પ્રકારો, અથવા વેરિઅન્ટ્સ

    LEB128 (Little-Endian Base 128) દરેક બાઇટમાં 7 payload bits આપે છે અને સૌથી મહત્વપૂર્ણ બિટ continuation flag તરીકે કામ કરે છે. નાના નંબર્સ (0–127) એક જ બાઇટ વાપરે છે; 16,383 સુધીના નંબર્સ બે બાઇટ્સ વાપરે છે; અને આગળ પણ એમ જ. ઇનપુટ્સ whitespace, commas, અથવા newlines દ્વારા અલગ કરેલા decimal નંબર્સ સ્વીકારે છે. આઉટપુટ્સ hexadecimal, Base64, અને raw byte array notation માં ઉપલબ્ધ છે. Signed integers ને પહેલા ZigZag transformation (n << 1) ^ (n >> 31) લાગુ કરીને એન્કોડ કરી શકાય છે.

    સામાન્ય ખામીઓ અને એજ કેસિસ

    JavaScript number precision 2^53 − 1 સુધી મર્યાદિત છે; Number.MAX_SAFE_INTEGER કરતાં ઉપરના મૂલ્યોને સુરક્ષિત રીતે એન્કોડ કરી શકાતાં નથી. Truncated VarInt સ્ટ્રીમ્સ (terminator byte ગેરહાજર) આંશિક રીતે ડિકોડ થાય છે અને offset દર્શાવતી ભૂલ પરત કરે છે. Negative numbers ને સીધા એન્કોડ કરી શકાતાં નથી — પહેલા ZigZag encoding વાપરો. સ્ક્રીનશોટ્સમાંથી VarInt બાઇટ્સ કૉપી કરવાનું ટાળો જ્યાં Base64 padding કાઢી નાખવામાં આવ્યું હોઈ શકે, કારણ કે missing padding બાઇટ boundaries બદલી નાખે છે.

    કોડની સામે આ ટૂલ ક્યારે વાપરવું

    ડિબગિંગ દરમિયાન અથવા ટેસ્ટ્સ લખતી વખતે Protobuf wire bytes નું ઝડપી નિરીક્ષણ કરવા બ્રાઉઝર ટૂલ વાપરો. પ્રોડક્શન એન્કોડિંગ માટે ભાષા-નેટિવ VarInt લાઇબ્રેરીઝ (`varint` on npm, `binary.varint` in Go's encoding/binary, `decode_varint` in Python's google.protobuf.internal) વાપરો, જે streaming, error recovery, અને ZigZag transformation ને એક જ કૉલમાં હેન્ડલ કરે છે.