आमतौर पर जब हम दशमलव को हेक्साडेसिमल (बेस 16) में बदलते हैं तो हम 0123456789ABCDEF सेट का उपयोग करके नंबर को मैप करते हैं।
हमें एक फ़ंक्शन लिखना आवश्यक है जो ठीक वही करता है लेकिन उपयोगकर्ता को ऊपर वर्णित के बजाय किसी भी स्केल का उपयोग करने की स्वतंत्रता प्रदान करता है।
उदाहरण के लिए:
दशमलव 363 का हेक्साडेसिमल नोटेशन 16B है लेकिन यदि उपयोगकर्ता '0123456789ABCDEF' के बजाय 'qwertyuiopasdfgh' स्केल का उपयोग करने का निर्णय लेता है, तो नंबर 363, तब wus द्वारा दर्शाया जाएगा
यही हमें करना आवश्यक है।
तो, आइए एक फ़ंक्शन toHex() बनाएं जो एक इंटीजर से हेक्स बनाने के लिए रिकर्सन का उपयोग करता है। सटीक होने के लिए, यह चार आर्गुमेंट लेगा, लेकिन उन चार में से केवल पहले दो अंतिम उपयोगकर्ता के लिए उपयोगी होंगे।
उनमें से पहला हेक्स में बदली जाने वाली संख्या होगी, और दूसरा कस्टम स्केल, यह वैकल्पिक होगा और यदि यह प्रदान किया जाता है, तो यह ठीक 16 कैरेक्टर्स की एक स्ट्रिंग होनी चाहिए अन्यथा फ़ंक्शन false लौटाता है। अन्य दो आर्गुमेंट्स hexString और isNegative हैं जो डिफ़ॉल्ट रूप से खाली स्ट्रिंग और एक बूलियन पर सेट हैं।
उदाहरण
const num = 363;
const toHex = (
num,
hexString = '0123456789ABCDEF',
hex = '',
isNegative = num < 0
) => {
if(hexString.length !== 16){
return false;
}
num = Math.abs(num);
if(num && typeof num === 'number'){
// रिकर्सिवली शेष को hex में जोड़ें और num को 16 से विभाजित करें
return toHex(Math.floor(num / 16), hexString,
`${hexString[num%16]}${hex}`, isNegative);
};
return isNegative ? `-${hex}` : hex;
};
console.log(toHex(num, 'QWERTYUIOPASDFGH'));
console.log(toHex(num));
console.log(toHex(num, 'QAZWSX0123456789'))
आउटपुट
कंसोल में आउटपुट होगा:
WUS 16B A05