javaScript中任意进制转换
所用方法简介
1、Number.protoType.toString([radix])
Number 对象覆盖了 Object 对象上的 toString() 方法,它不是继承的 Object.prototype.toString()。对于 Number 对象,toString() 方法以指定的基数返回该对象的字符串表示 如果转换的基数大于10,则会使用字母来表示大于9的数字,比如基数为16的情况,则使用a到f的字母来表示10到15。
如果基数没有指定,默认为 10。 如果对象是负数,则会保留负号。即使radix是2时也是如此:返回的字符串包含一个负号(-)前缀和正数的二进制表示,不是 数值的二进制补码
2、parseInt(string, radix)
将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数
参数
string要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略 radix是可选值,从 2 到 36,代表该进位系统的数字。例如说指定 10 就等于指定十进位
根据给定radix,parseInt函数产生一个由字符串参数内容解析过来的整数值。字符串中开头的空白会被忽略。如果radix没有指定或者为0,参数会被假定以10为基数来解析,如果数值以字符对0x或0X开头,会假定以16为基数来解析
所以了平时要是用到这个方法最好是指定radix这个参数,以免出现意料之外的结果
进制转换
数字的toString方法可以将10进制转换成不同的进制,parseInt把任意进制字符串转为10进制
parseInt('13', 4) //7 4进制转10进制
parseInt('13', 8) //11 8进制转10进制
(11).toString(8) //'13' 10进制转8进制
(7).toString(4) //'13' 10进制转4进制
上面的都是10进制有关,可以用单独方法完在转换 要是 2进制转8进制了?
parseInt('1111', 2).toString(8) //'17' 2进制转8进制
parseInt('17', 8).toString(2) //'1111' 8进制转2进制
parseInt('77', 8).toString(16) //'3f' 16进制转8进制
parseInt('3f', 16).toString(8) //'77' 8进制转16进制
总结
- 数字toString方法可以带参,是个被忽视的点
- parseInt方法,有第二个参,在工作中发现很多人不知道这个,基本都只带了第一个参数,其实第二个参数是有必要带的,这样可以避免一些错误
- parseInt把任意进制字符串转为10进制,toString10进制转换成不同的进制,配合使用从而达到任意进制转换
参考:
文中如有错误,欢迎在评论区指正,如果这篇文章帮助到了你,欢迎点赞和关注
本文使用 mdnice 排版