有些时候我们需要自定义进制数,实现缩短数字长度、加密算法等,本文基于JavaScript语言实现了一套互转方案,支持N进制
我们知道N进制就是使用N个字符来表示不同值
本文示例为数字+大小写字母,共62个字符,实现的62进制,在实际使用时可改变字符串长度实现不同进制
代码如下:
/62进制字符 const base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; const ben = base.length; function toBasenum) { let arr = []; while num > 0) { arr.pushbase[num % ben]); num = Math.floornum / ben); } //数组反转,因为个位在索引0的位置,应反过来显示 return arr.reverse).join''); } function to10baseNum) { baseNum = baseNum.split'').reverse).join''); let val = 0; for let i = 0; i < baseNum.length; i++) { let c = baseNum[i]; val += base.indexOfc) * Math.powben, i)); } return val; }
* 以上代码首先定义了进制类型,即该进制使用到的所有字符,并提供两个方法从十进制之间转换及转换为十进制
编写测试代码:
function testval) { console.log'十进制:' + val); let str = toBaseval); console.logben + '进制:' + str); console.log'转回十进制:' + to10str)); console.log' ') } function ) { test11); test62); test999); testDate.now)); }));
运行结果为:
我们可以改变进制进行测试,如常用的
16进制:
const base = '0123456789ABCDEF';
2进制:
const base = '01';
加上各种字符组成83进制:
const base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*)_+=-<>,./?';
致读者:感谢你阅读本文,请随手点击右下角的推荐或分享,谢谢!