之前看到一些文章里面写到16进制转换10进制
这里是引用http://t.csdn.cn/C0odO
但是输出的结果有问题,经过分析发现,是由于数字与字符的ASCII码并不连续,导致计算返回值的时候不能按照64来进行计算。
下面来实现10进制转换为26进制
//实现10进制数转换为16进制数
function DecToHex(num){
let code = '';
let m = 0;
while(num){
m= num % 26;
if(m>9){
code = String.fromCharCode(55 + m) +code;
}else{
code = m + code;
}
num = (num - m )/26
}
return code
}
console.log(DecToHex(26));
关键技术:unicode编码,String.fromCharCode(),
实现26进制转换为10进制
function trans26(num){
let m = 0;
for ( let len = num.length-1 ,j=1; len >= 0; len-- ,j=j*26 ){
let ASC = num[len].charCodeAt()
if (ASC > 64){
ASC = ASC -55
}else{
ASC = ASC - 48
}
m = ASC*j + m
}
return m;
}
console.log(trans26('A11'));
关键技术:charCodeAt()
输出展示:
感兴趣的同学们可以自己去试试