javascript parseInt() 函数的进制转换注意细节


Posted in Javascript onJanuary 08, 2013

parseInt(string, radix) 有2个参数,第一个string 是传入的数值,第二个radix是 传入数值的进制,参数radix 可以忽略,默认为 10,各种进制的数转换为 十进制整数(如果不是整数,向下取整)。

radix 的取值范围是 2~36,如果 radix 为 1 或 radix>36 ,转换结果将是 NaN ,如果 radix 为 0 或其它值将被忽略,radix 默认为 10 。

该函数要求第一个参数是字符串,如果不是字符串将被转换成字符串,而且,在进行转换之前,字符串参数的左侧符合进制数所使用字符集的字符被截取出来用于进制数的转换。
字符串参数开头和结尾的空格会被忽略。

parseInt(param,radix) 相当于 parseInt(String(param).trim(),radix)
例如, parseInt(010) // 8,处理过程是

010 --> 8 //0 开头,八进制数 
8 --> '8' 
parseInt('8') //忽略 radix ,传入的 第一个参数 被识别为 10进制数

parseInt(0x10) // parseInt(16) 得到十进制16 
parseInt(010,16) // parseInt('8',16) ,得到 8 
parseInt(010,7) // parseInt('8',7) , 8 超出 7 进制数所使用字符的范围被丢弃,转换结果为 NaN 
parseInt(0x10,8) // parseInt('16',8) 得到 14 
parseInt(0x13,8) // parseInt('19',8) 字符 9 超出了8进制数所使用字符的范围,被丢弃,转换结果为 1

如果第一个参数直接传入 字符串,忽略 radix ,则:
字符串以 0 开头,默认被识别为 8 进制( IE 9 识别为 10进制,ie 6-8 识别为 8 进制 )
字符串以 0x 开头,默认被识别为 16 进制
否则识别为 10进制
parseInt('010') //8 ,ie9 得到 10 
parseInt('018') //1 ,ie9 得到 18 
parseInt('017') //15 , ,ie9 得到 15 
parseInt('010',8) //直接识别为8进制 ,转换结果 8 
parseInt('010',7) //直接识别为7进制 ,转换结果 7 
parseInt('010',16) //直接识别为16进制 ,转换结果 16 
parseInt('0x10') //16 
parseInt('0x1g') //1 
parseInt('0x1f') //31 
parseInt('0x10',8) //直接识别为8进制 ,字符 x 超出 8进制数所使用字符的范围,转换结果 0 
parseInt('0x10',15) // 转换结果 0 
parseInt('0x10',16) // 0x 符合 16进制数的表达格式,被正确识别为 16 进制数,转换结果同 parseInt('10',16) 为 16 
parseInt('0x10',17) // 识别为17进制,字符 x 超出 17进制数所使用字符的范围,转换结果 0 
parseInt(true) //NaN ,注意区别 布尔型在 Number 函数中的用法, Number(true) //1

需要特别注意的
1/0 // Infinity
Infinity.toString() // 'Infinity'
于是,坑爹的来了:
parseInt(1/0,18) // NaN 
parseInt(1/0,19) //18

因为 字符 i 在 19 进制数使用的字符集内,字符n 及后面的被丢弃
parseInt(1/0,19) 实际为 parseInt('i',19)
另外还有
parseInt(NaN,36) // 30191

因为 字符 n 在 36 进制中相当于 十进制 23,a 相当于十进制 10,于是有
23*36*36 + 10*36 + 23 = 30191
parseInt(1/0,36) // 1461559270678 ,实为 parseInt('Infinity',36)
parseFloat 是没有进制参数的,只能处理10进制数。
parseFloat.length //1
Javascript 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
Javascript实现滑块滑动改变值的实现代码
Apr 12 Javascript
移动节点的jquery代码
Jan 13 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
聊一聊Vue.js过渡效果
Sep 07 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 Javascript
js制作可以延时消失的菜单
Jan 13 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
Jan 13 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
详解vue-router的导航钩子(导航守卫)
Nov 02 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 #Javascript
jquery插件珍藏(图片局部放大/信息提示框)
Jan 08 #Javascript
jquery Mobile入门—外部链接切换示例代码
Jan 08 #Javascript
jquery Moblie入门—hello world的示例代码学习
Jan 08 #Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 #Javascript
javascript 系统文件夹文件操作及参数介绍
Jan 08 #Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
Jan 08 #Javascript
You might like
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
php注入实例
2006/10/09 PHP
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
写出高质量的PHP程序
2012/02/04 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
摘自启点的main.js
2008/04/20 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
python画图常规设置方式
2020/03/05 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
关于赌博的检讨书
2014/01/24 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
庆六一开幕词
2015/01/29 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
能让Python提速超40倍的神器Cython详解
2021/06/24 Python