JS万能进制数与十进制之间转换 2进制、16进制、26进制、62进制等

有些时候我们需要自定义进制数,实现缩短数字长度、加密算法等,本文基于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~!@#$%^&*)_+=-<>,./?';

致读者:感谢你阅读本文,请随手点击右下角的推荐或分享,谢谢!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注