Bạn đang cố chuyển đổi cơ số 16 (hệ thập lục phân) thành cơ số 36 (26 ký tự trong bảng chữ cái cộng với 10 số). Một cách đơn giản có thể là sử dụng parseInt
tham số cơ số của để phân tích cú pháp id hệ thập lục phân, sau đó gọi .toString(36)
để chuyển đổi đó thành cơ số-36. Điều này sẽ biến "507f191e810c19729de860ea" thành "VDFGUZEA49X1V50356", giảm độ dài từ 24 xuống 18 ký tự.
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>