javascriipt进制之间的转换二进制,8进制,10进制,16进制之间的转换

在公司,碰到生成设备指令的问题?需要做个16、10、2进制之间的转换,再次特意做一个笔记。在这里会详细的介绍一下Javascript中的Number的toString,以及parseInt()的方法。

在js中数字(Number)的toString方法

Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式和基模式。采用默认模式,toString() 方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学计数法),如下所示:

1
2
3
4
var iNum1 = 10;
var iNum2 = 10.0;
alert(iNum1.toString()); //输出 "10"
alert(iNum2.toString()); //输出 "10"

注释:在默认模式中,无论最初采用什么表示法声明数字,Number 类型的 toString() 方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。

采用 Number 类型的 toString() 方法的基模式,可以用不同的基输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。基只是要转换成的基数的另一种加法而已,它是 toString() 方法的参数:

1
2
3
4
var iNum = 10;
alert(iNum.toString(2)); //输出 "1010" //10进制转2进制
alert(iNum.toString(8)); //输出 "12" //10进制转8进制
alert(iNum.toString(16)); //输出 "A" //10进制转进16制

转换成数字

ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat()。
前者把值转换成整数,后者把值转换成浮点数。只有对 String 类型调用这些方法,它们才能正确运行;对其他类型返回的都是 NaN。

  1. parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换成数字。
  2. 例如,如果要把字符串 “12345red” 转换成整数,那么 parseInt() 将返回 12345,因为当它检查到字符 r 时,就会停止检测过程。
  3. 字符串中包含的数字字面量会被正确转换为数字,比如 “0xA” 会被正确转换为数字 10。不过,字符串 “22.5” 将被转换成 22,因为对于整数来说,小数点是无效字符。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var iNum1 = parseInt("12345red"); //返回 12345
    var iNum1 = parseInt("0xA"); //返回 10
    var iNum1 = parseInt("56.9"); //返回 56
    var iNum1 = parseInt("red"); //返回 NaN
    var iNum1 = parseInt("AF", 16); //返回 175 // 转成16进制
    var iNum1 = parseInt("10", 2); //返回 2 // 转成2进制
    var iNum2 = parseInt("10", 8); //返回 8 // 转成8进制
    var iNum3 = parseInt("10", 10); //返回 10 // 转成10进制

如果十进制数包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值。例如:

1
2
3
var iNum1 = parseInt("010"); //返回 8
var iNum2 = parseInt("010", 8); //返回 8
var iNum3 = parseInt("010", 10); //返回 10

最后的经验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//十进制转其他
var data=110;
alert(data);
alert(data.toString(8));
alert(data.toString(32));
alert(data.toString(16));
//其他转十进制
var data='110';
alert(parseInt(data,2));
alert(parseInt(data,8));
alert(parseInt(data,16));
//其他转其他
//先用parseInt转成十进制再用toString转到目标进制
alert(String.fromCharCode(parseInt(141,8)))
alert(parseInt('ff',16).toString(2));
文章目录
  1. 1. 在js中数字(Number)的toString方法
  2. 2. 转换成数字
  3. 3. 最后的经验
|