VarInt ఎన్కోడర్ / డీకోడర్
దశాంశ విలువలు
VarInt అవుట్పుట్
సాంకేతిక వివరాలు
VarInt ఎన్కోడర్ / డీకోడర్ ఎలా పనిచేస్తుంది
ఈ టూల్ ఏమి చేస్తుంది
VarInt టూల్ unsigned integerలను Protobuf-స్టైల్ LEB128 వేరియబుల్-లెంగ్త్ integerలుగా ఎన్కోడ్ చేసి, బైనరీ VarInt స్ట్రీమ్లను తిరిగి integer లిస్ట్లుగా డీకోడ్ చేస్తుంది. ప్రతి విలువ దాని పరిమాణాన్ని బట్టి 1–10 బైట్లలో ఎన్కోడ్ అవుతుంది; ప్రతి బైట్లోని హై బిట్ మరిన్ని బైట్లు వస్తాయా లేదో సూచిస్తుంది. అవుట్పుట్ను బైట్ అర్రే, హెక్సాడెసిమల్, లేదా Base64 రూపంలో చూపిస్తుంది, టెస్టులు మరియు ఫిక్చర్లలో సులభంగా ఎంబెడ్ చేయడానికి.
డెవలపర్ల సాధారణ వినియోగ సందర్భాలు
Protobuf వైర్-ఫార్మాట్ పేలోడ్లను డీబగ్ చేసే ఇంజినీర్లు పూర్తి Protobuf రన్టైమ్ను ప్రారంభించకుండా ఫీల్డ్ ట్యాగ్లు మరియు unsigned integer ఫీల్డ్ విలువలను పరిశీలించడానికి VarInt ఎన్కోడ్/డీకోడ్ను ఉపయోగిస్తారు. Bitcoin మరియు ఇతర క్రిప్టోకరెన్సీ డెవలపర్లు VarInt-ఎన్కోడ్ చేసిన స్క్రిప్ట్ లెంగ్త్లు మరియు ట్రాన్సాక్షన్ కౌంట్లను పార్స్ చేస్తారు. చిన్న సంఖ్యలకు కాంపాక్ట్గా ఉండటం వల్ల LEB128ను స్వీకరించే కస్టమ్ బైనరీ ప్రోటోకాల్లను రివర్స్-ఇంజినీరింగ్ చేస్తున్నప్పుడు కూడా ఈ టూల్ సహాయకారిగా ఉంటుంది.
డేటా ఫార్మాట్లు, రకాలు, లేదా వేరియంట్లు
LEB128 (Little-Endian Base 128) ప్రతి బైట్కు 7 పేలోడ్ బిట్లను ఉత్పత్తి చేస్తుంది; అత్యంత ముఖ్యమైన బిట్ continuation ఫ్లాగ్గా పనిచేస్తుంది. చిన్న సంఖ్యలు (0–127) ఒకే బైట్ను ఉపయోగిస్తాయి; 16,383 వరకు ఉన్న సంఖ్యలు రెండు బైట్లు ఉపయోగిస్తాయి; అలాగే కొనసాగుతుంది. ఇన్పుట్లు whitespace, కామాలు, లేదా న్యూలైన్లతో వేరు చేసిన డెసిమల్ సంఖ్యలను స్వీకరిస్తాయి. అవుట్పుట్లు హెక్సాడెసిమల్, Base64, మరియు రా బైట్ అర్రే నోటేషన్లో అందుబాటులో ఉంటాయి. Signed integerలను ముందుగా ZigZag ట్రాన్స్ఫార్మేషన్ (n << 1) ^ (n >> 31) అప్లై చేసి ఎన్కోడ్ చేయవచ్చు.
సాధారణ తప్పిదాలు మరియు ఎడ్జ్ కేసులు
JavaScript సంఖ్య ప్రెసిషన్ 2^53 − 1 వరకు మాత్రమే; Number.MAX_SAFE_INTEGER కంటే పై విలువలను సురక్షితంగా ఎన్కోడ్ చేయలేము. ట్రంకేట్ అయిన VarInt స్ట్రీమ్లు (టెర్మినేటర్ బైట్ లేకపోవడం) భాగంగా మాత్రమే డీకోడ్ అయి, ఆఫ్సెట్ను సూచించే ఎర్రర్ను తిరిగి ఇస్తాయి. నెగటివ్ సంఖ్యలను నేరుగా ఎన్కోడ్ చేయలేరు — ముందుగా ZigZag ఎన్కోడింగ్ ఉపయోగించండి. Base64 ప్యాడింగ్ తొలగించబడే అవకాశం ఉన్న స్క్రీన్షాట్ల నుంచి VarInt బైట్లను కాపీ చేయడం నివారించండి; ప్యాడింగ్ లేకపోతే బైట్ బౌండరీలు మారిపోతాయి.
కోడ్తో పోల్చితే ఈ టూల్ను ఎప్పుడు ఉపయోగించాలి
డీబగ్గింగ్ సమయంలో లేదా టెస్టులు రాస్తున్నప్పుడు Protobuf వైర్ బైట్లను త్వరగా పరిశీలించడానికి ఈ బ్రౌజర్ టూల్ను ఉపయోగించండి. ప్రొడక్షన్ ఎన్కోడింగ్ కోసం భాష-నేటివ్ VarInt లైబ్రరీలను (`varint` on npm, Go యొక్క encoding/binary లో `binary.varint`, Python యొక్క google.protobuf.internal లో `decode_varint`) ఉపయోగించండి; ఇవి స్ట్రీమింగ్, ఎర్రర్ రికవరీ, మరియు ZigZag ట్రాన్స్ఫార్మేషన్ను ఒకే కాల్లో నిర్వహిస్తాయి.