ChenPt / dailyNote

dailyNode for myself
https://github.com/ChenPt/dailyNote/issues
0 stars 0 forks source link

4/12/进制转换 #3

Open ChenPt opened 6 years ago

ChenPt commented 6 years ago

主要是利用了toString方法和 parseInt方法来进行转换

toString

Number.prototype.toString([radix]) 可以传入一个参数,代表要转换的进制。

利用toString来将十进制的数转换为其他进制的数。

let num = 10
num.toString(2)        // 1010

parseInt

parseInt(string, radix)接受两个参数,要转换成整数的字符串和字符串中的数字表示的进制。

parseInt默认字符串里的数字是十进制的。

当遇到字符串中不符合当前进制的字符时,就会停止,只将停止之前的那段字符串转化成整数(10进制)

let str = "1011aaa1010"
parseInt(str, 2)     // 11

遇到a时就停止了,只将1011(2)转化成十进制整数

封装了个函数用以进制转换。

//进制转换
/** 
*   @params {string}  x
*   @params {number} before_radix
*   @params {number} after_radix
**/
function change(x, before_radix, after_radix) {
    if(typeof x !== 'string') {
        return new Error("first param should be a string")
    }
    if(typeof x === 'string') {
        if(before_radix == after_radix) {
            return Number(x)
        }

        if(before_radix === 10) {
            return Number(x).toString(after_radix)
        }

        if(before_radix !== 10) {
            return parseInt(x, before_radix).toString(after_radix)
        }
    } 

}

//判断是否为整数的一个小方法..
function judgeInt(x) {
    if(parseFloat(x) === parseInt(x)) {
        return true
    } else {
        return false
    }
}