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