आप आधार-16 (हेक्साडेसिमल) को आधार-36 (वर्णमाला में 26 वर्ण और 10 अंक) में बदलने का प्रयास कर रहे हैं। एक आसान तरीका बस parseInt
. का उपयोग करना हो सकता है हेक्साडेसिमल आईडी को पार्स करने के लिए रेडिक्स पैरामीटर, और फिर .toString(36)
पर कॉल करें। इसे आधार-36 में बदलने के लिए। जो "507f191e810c19729de860ea" को "VDFGUZEA49X1V50356" में बदल देगा, जिससे लंबाई 24 से कम होकर 18 हो जाएगी।
function toBase36(id) {
var half = Math.floor(id.length / 2);
var first = id.slice(0, half);
var second = id.slice(half);
return parseInt(first, 16).toString(36).toUpperCase()
+ parseInt(second, 16).toString(36).toUpperCase();
}
function toBase36(id) {
var half = Math.floor(id.length / 2);
var first = id.slice(0, half);
var second = id.slice(half);
return parseInt(first, 16).toString(36).toUpperCase()
+ parseInt(second, 16).toString(36).toUpperCase();
}
// Ignore everything below (for demo only)
function convert(e){ if (e.target.value.length % 2 === 0) base36.value = toBase36(e.target.value) }
var base36 = document.getElementById('base36');
var hex = document.getElementById('hex');
document.getElementById('hex').addEventListener('input', convert, false);
convert({ target: { value: hex.value } });
input { font-family: monospace; width: 15em; }
<input id="hex" value="507f191e810c19729de860ea">
<input id="base36" readonly>