一文带你搞懂JavaScript中的进制与进制转换.docx

一文带你搞懂JavaScript中的进制与进制转换.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

一文带你搞懂JavaScript中的进制与进制转换

目录进制介绍进制转换parseInt(str,radix)Number()+(一元运算符)Number.prototype.toString(radix)自定义转换十进制与十六进制转换十进制和二进制转换

进制介绍

JavaScript中提供的进制表示方法有四种:十进制、二进制、十六进制、八进制。

对于数值字面量,主要使用不同的前缀来区分:

十进制(Decimal):取值数字0-9;不用前缀。二进制(Binary):取值数字0和1;前缀0b或0B。十六进制(Hexadecimal):取值数字0-9和a-f;前缀0x或0X。八进制(Octal):取值数字0-7;前缀0o或0O(ES6规定)。

需要注意的是,非严格模式下浏览器支持:如果有前缀0并且后面只用到0-7八个数字的数值时,该数值视为八进制;但如果前缀0后面跟随的数字中有8或者9,则视为十进制。

严格模式下,如果数字加前缀0,则报错:UncaughtSyntaxError:Decimalswithleadingzerosarenotallowedinstrictmode。

各进制的数值,如果取值数字超过给定的范围,则会报错:UncaughtSyntaxError:Invalidorunexpectedtoken。

在JavaScript内部的默认情况下,二进制、十六进制、八进制字面量数值,都会自动转为十进制进行运算。

0x22//34

0b111//7

0o33//27

0x22+0b111//41

0o33+12//39

(0x33).toString()//51

(0x33).valueOf()//51

除了十进制是Javascript默认的数字进制以外,其他三种进制方式平时使用较少,主要在处理Blob数据、字节编码或者位运算、转义字符等等时候才会碰到。

进制转换

下文将主要讨论进制转换时的问题。

JavaScript提供了原生函数,进行十进制与其他各进制之间的相互转换。

其中,从其他进制转换成十进制,有三种方式:parseInt(),Number(),+(一元运算符)。这三种方式都只能转换整数。

从十进制转换成其他进制,可以使用Number.prototype.toString()。支持小数。

parseInt(str,radix)

第一个参数是需要解析的字符串;其他进制不加前缀。

第二个参数是一个进制基数,表示转换时按什么进制来理解这个字符串,默认值10,表示转十进制。

第二个参数如果非数字,则自动转数字,如无法转称数字则忽略该参数;是数字时,必须是2-36的整数,超出该范围,返回NaN。

parseInt(1111,2)//15

parseInt(1234,8)//668

parseInt(18af,16)//6319

parseInt(1111)//1111

如果不传入第二参数,则parseInt会默认使用十进制来解析字符串;但是,如果字符串以0x开头,会被认为是十六进制数。

而其他进制的字符串,0o21(八进制),0b11(二进制)不会以该进制基数自动转换,而是得到0。

所以,在使用parseInt进行进制转换时,为了保证运行结果的正确性和稳定性,第二个参数不能省略。

parseInt(0x21)//33

parseInt(0o21)//0

parseInt(0b11)//0

parseInt(111,add)//111

parseInt(111,787)//NaN

如果需要解析的字符串中存在对于当前进制基数无效的字符,则会从最高位取有效字符进行转换,没有效字符则返回NaN。

parseInt(88kk,16)//136,===0x88

parseInt(kk,16)//NaN

Number()

可以把字符串转为数字,支持其他进制的字符串,默认转成十进制数字。

字符串中如果存在无效的进制字符时,返回NaN。

记住,需要使用进制前缀,0b,0o,0x。

Number(0b11100)//28

Number(0o33)//27

Number(0x33)//51

Number(0x88kk)//NaN

+(一元运算符)

与Number()一样,可以把字符串转为数字,支持

文档评论(0)

152****2426 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档