在公司,碰到生成设备指令的问题?需要做个16、10、2进制之间的转换,再次特意做一个笔记。在这里会详细的介绍一下Javascript中的Number的toString
,以及parseInt()
的方法。
在js中数字(Number)的toString方法
Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式和基模式。采用默认模式,toString() 方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学计数法),如下所示:
注释:在默认模式中,无论最初采用什么表示法声明数字,Number 类型的 toString() 方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。
采用 Number 类型的 toString() 方法的基模式,可以用不同的基输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。基只是要转换成的基数的另一种加法而已,它是 toString() 方法的参数:
1234 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。
- parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换成数字。
- 例如,如果要把字符串 “12345red” 转换成整数,那么 parseInt() 将返回 12345,因为当它检查到字符 r 时,就会停止检测过程。
- 字符串中包含的数字字面量会被正确转换为数字,比如 “0xA” 会被正确转换为数字 10。不过,字符串 “22.5” 将被转换成 22,因为对于整数来说,小数点是无效字符。
123456789 var iNum1 = parseInt("12345red"); //返回 12345var iNum1 = parseInt("0xA"); //返回 10var iNum1 = parseInt("56.9"); //返回 56var iNum1 = parseInt("red"); //返回 NaNvar 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,这样才不会意外地得到八进制的值。例如:
最后的经验
|
|