js-快速进制之间的转换

前言

在c语言中,进制之间的转换,基本上是靠辗转相除法。转换的种类一般分为三种:

  • 10进制转换为其x进制 (x,y不为10,且x!=10)
  • x进制转换为十进制
  • x进制转换为y进制

在js中,有俩个方法的巧妙利用,可以快速实现进制之间的转换。

1
2
3
4
5
6
7
8
9
10
Number.toString()函数返回表示该数字的指定进制形式的字符串。
语法: numberObject.toString( [ radix ] )
* 参数radix支持 [2, 36] 之间的整数
例如:
var num = 1024;
// 二进制
document.writeln( num.toString(2) ); // 10000000000
num = 1245;
// 八进制
document.writeln( num.toString( 8 ) ); // 2335
  • 注意:Number.toString()是Number包装类型的方法。“继承”于Object.toString(),但是已经重写了这个方法。
1
2
3
4
5
6
7
8
9
10
11
parseInt(string, radix)
string : 必需。要被解析的字符串。
radix : 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

例如:
parseInt("10"); //返回 10
parseInt("19",10); //返回 19 (10+9)
parseInt("11",2); //返回 3 (2+1)
parseInt("17",8); //返回 15 (8+7)

如何转换

10进制转换为其x进制

var x=110;
alert(x);
alert(x.toString(8));
alert(x.toString(32));
alert(x.toString(16));

x进制转换为十进制

var x=’110’;
alert(parseInt(x,2));
alert(parseInt(x,8));
alert(parseInt(x,16));

x进制转换为y进制

  • 先用parseInt转成10进制再用toString转到目标进制
    alert(String.fromCharCode(parseInt(141,8)))
    alert(parseInt(‘ff’,16).toString(2));

注意事项

这种方法只适用于[2-32]之间进制的转换。超过范围之后,还需要自己写方法。