1636
Version:
Base16 to/from Base36 conversion
52 lines (46 loc) • 1.09 kB
JavaScript
function addLeadZeros(str, pegLength) {
if (str.length == 0) str = '0'
while ((str.length % pegLength) > 0) {
str = '0' + str;
}
return str
}
function stripLeadZeros(str) {
while (str.length > 1 && str[0] == '0') {
str = str.substr(1);
}
return str
}
function to36(base16) {
if (typeof base16 != 'string') return
if (base16 == '') return '0'
base16 = addLeadZeros(base16, 5)
var base36 = ''
var len = base16.length
while (len > 0) {
var val = parseInt(base16.substr(0,5), 16)
base16 = base16.substr(5)
len -= 5
base36 += addLeadZeros(val.toString(36), 4)
}
return stripLeadZeros(base36)
}
function to16(base36) {
if (typeof base36 != 'string') return
if (base36 == '') return '0'
base36 = addLeadZeros(base36, 4)
var base16 = ''
var len = base36.length
while (len > 0) {
var val = parseInt(base36.substr(0,4), 36)
base36 = base36.substr(4)
len -= 4
base16 += addLeadZeros(val.toString(16), 5)
}
return stripLeadZeros(base16)
}
module.exports = {
to36: to36,
to16: to16
};