DevToys Web Pro iconDevToys Web Proவலைப்பதிவு
எங்களை மதிப்பிடுங்கள்:
உலாவி நீட்டிப்பை முயற்சிக்கவும்:

VarInt என்கோடர் / டிகோடர்

12 பைட்டுகள்
முறை

தசம மதிப்புகள்

  • VarInt வெளியீடு

  • தொழில்நுட்ப விவரங்கள்

    VarInt என்கோடர் / டிகோடர் எப்படி வேலை செய்கிறது

    இந்த கருவி என்ன செய்கிறது

    VarInt கருவி unsigned integerகளை Protobuf-பாணி LEB128 variable-length integerகளாக என்கோடு செய்து, binary VarInt streamகளை மீண்டும் integer பட்டியல்களாக டிகோடு செய்கிறது. ஒவ்வொரு மதிப்பும் அதன் அளவினைப் பொறுத்து 1–10 bytes-ல் என்கோடு செய்யப்படும்; ஒவ்வொரு byte-இன் high bit மேலும் bytes தொடருமா என்பதைச் சுட்டுகிறது. output, byte array, hexadecimal, அல்லது Base64 ஆகக் காட்டப்படும்; இதனால் tests மற்றும் fixtures-ல் எளிதாக embed செய்யலாம்.

    டெவலப்பர்களுக்கான பொதுவான பயன்பாட்டு நிலைகள்

    Protobuf wire-format payloadகளை டிபக் செய்யும் இன்ஜினியர்கள், முழு Protobuf runtime-ஐ இயக்காமல் field tagகளையும் unsigned integer field valueகளையும் ஆய்வு செய்ய VarInt encode/decode-ஐப் பயன்படுத்துகிறார்கள். Bitcoin மற்றும் பிற cryptocurrency டெவலப்பர்கள் VarInt-என்கோடு செய்யப்பட்ட script lengthகளையும் transaction countகளையும் பார்ஸ் செய்கிறார்கள். சிறிய எண்களுக்கு சுருக்கமாக இருப்பதால் LEB128-ஐ ஏற்றுக்கொள்ளும் custom binary protocolகளை reverse-engineer செய்யும் போது இந்த கருவி உதவியாக இருக்கும்.

    தரவு வடிவங்கள், வகைகள், அல்லது மாறுபாடுகள்

    LEB128 (Little-Endian Base 128) ஒவ்வொரு byte-க்கும் 7 payload bitகளை வெளியிட்டு, மிக முக்கியமான bit-ஐ continuation flag ஆகப் பயன்படுத்துகிறது. சிறிய எண்கள் (0–127) ஒரு byte பயன்படுத்தும்; 16,383 வரை உள்ள எண்கள் இரண்டு bytes பயன்படுத்தும்; இப்படியே தொடரும். input-கள் whitespace, comma, அல்லது newline மூலம் பிரிக்கப்பட்ட decimal எண்களை ஏற்கும். output-கள் hexadecimal, Base64, மற்றும் raw byte array notation-ல் கிடைக்கும். Signed integerகளை முதலில் ZigZag transformation (n << 1) ^ (n >> 31) பயன்படுத்தி என்கோடு செய்யலாம்.

    பொதுவான தவறுகள் மற்றும் விளிம்பு நிலைகள்

    JavaScript எண் துல்லியம் 2^53 − 1 வரை மட்டுமே; Number.MAX_SAFE_INTEGER-ஐ விட பெரிய மதிப்புகளை பாதுகாப்பாக என்கோடு செய்ய முடியாது. Truncated VarInt streamகள் (terminator byte இல்லாமல்) பகுதியளவில் டிகோடு ஆகி, offset-ஐக் காட்டும் பிழையைத் திருப்பும். Negative எண்களை நேரடியாக என்கோடு செய்ய முடியாது — முதலில் ZigZag encoding பயன்படுத்துங்கள். Base64 padding நீக்கப்பட்டிருக்கக்கூடிய screenshotகளிலிருந்து VarInt bytes-ஐ நகலெடுப்பதைத் தவிர்க்கவும்; padding இல்லாமல் போனால் byte boundaryகள் மாறும்.

    கோடுக்கு பதிலாக இந்த கருவியை எப்போது பயன்படுத்துவது

    டிபக்கிங் போது அல்லது tests எழுதும் போது Protobuf wire bytes-ஐ விரைவாக ஆய்வு செய்ய browser கருவியைப் பயன்படுத்துங்கள். production encoding-க்கு, மொழி-நேட்டிவ் VarInt நூலகங்களை (`varint` on npm, Go-வின் encoding/binary-இல் `binary.varint`, Python-ன் google.protobuf.internal-இல் `decode_varint`) பயன்படுத்துங்கள்; இவை streaming, error recovery, மற்றும் ZigZag transformation-ஐ ஒரே call-ல் கையாளும்.