笔记:JS仿excel十进制和26进制转换算法
引子:看过这篇文章用C#实现的十进制和26进制转换算法,觉得在前端以后会用到,遂改写出Javacript的写法。
十进制转26进制:
function convertDSTo26BS(num){
var code='';
var reg = /^\d+$/g;
if(!reg.test(num)){
return code;
}
while (num>0){
m = num % 26
if (m==0){
m = 26;
}
code = String.fromCharCode(64 + parseInt(m)) + code;
num = ( num - m ) /26;
}
return code;
}
知识要点:求模%,String.formCharCode,正则
26进制转十进制:
function convert26BSToDS(code){
var num=-1;
var reg = /^[A-Z]+$/g;
if(!reg.test(code)){
return num;
}
num=0;
for (var i = code.length - 1, j = 1; i >= 0; i--, j *= 26){
num += (code[i].charCodeAt() -64 )* j;
}
return num;
}
知识要点:String.charCodeAt,正则
chrome下测试: