JavaScript 关于进制之间的转换实现
程序员文章站
2024-03-18 20:54:58
...
JS要实现进制之间的转换,可以利用parseInt,toString完成。
1.n进制 – > 10进制: parseInt(string,radix)
2.n进制 – > radix进制: a.toString(radix)
-
parseInt(string,radix)
– > 能实现 n进制 – > 10进制
string:是被解析的字符串,是必填的内容。
radix:要解析的数字的基数,介于2~36之间,是可选填的内容。
①当radix参数被省略或者为0时,表示字符串string以10进制为基础来解析转换成10进制,
说白了,这里就是10进制转换成10进制,输出的还是10进制,没多大的意义,所以当radix省略时,我们常用parseInt(string)来实现将以数字开头的字符串转换成整型数字。
②当radix参数为n时,表示字符串string以 n 进制为基础来解析转换成10进制。
光说还是有点抽象,下面给出几个例子,结合到看,就容易明白了
console.log(parseInt('b',16)); -- > 11
//表示将b以16进制为基底转换成10进制,16进制的b转换成10进制就是11
console.log(parseInt('20',16)); -- > 32
//表示将20以16进制为基底转换成10进制,16进制的20转换成10进制就是11
console.log(parseInt('1010',2)); -- > 10
//表示将1010以2进制为基底转换成10进制,2进制的1010转换成10进制就是11
再说通俗点,可以看成:string是radix进制的数,再将string转换成10进制。
-
a.toString(radix)
– > n进制 – > radix 进制
这里的 n 取决于 a 是什么进制的数,如果 a 是10进制的数,那么 n 就是10进制数,如果 a 是16进制的数,那么 n 就是16进制数,说白了,就是将 a 转换成任意的进制数。
var a = value; //这里value是任意的值,为了下面方便,我用value一次性代替
//a=10,将a转换成16进制
console.log(a.toString(16)); -- > a
//a=10,将a转换成2进制
console.log(a.toString(2)); -- > 1010
//a=013,将a转换成16进制
console.log(a.toString(16)); -- > b
//a=013,将a转换成2进制
console.log(a.toString(2)); -- > 1011
//a = 0x13,将a转换成10进制
console.log(a.toString(10)); -- > 19
//a = 0x13,将a转换成8进制
console.log(a.toString(8)); -- > 23
......
注:以0开头的表示8进制,以0x开头的表示16进制,二进制没有,
所以:
要注意:二进制转换成其它进制,要先用parseInt()转换成十进制,在用toString()将转换后的十进制数转换成想要得到的进制,以二进制数”1010”为例,如果不先转换成十进制,系统会认为它是十进制数“一千零一十”,而不是二进制数“幺零幺零”。
var num = 1010;
console.log(num.toString(16)); -- > 3f2 //十进制数1010转换成16进制3f2
var num2 = 1010;
var num10 = parseInt(num2, 2); //二进制数1010转换成10进制数10
console.log(num10.toString(16));-- >a //十进制数10转换成16进制数a
如有错,下方评论指出,感谢……