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 相关文章推荐
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
Mar 02 Javascript
Javascript实现跑马灯效果的简单实例
May 31 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
Jun 28 Javascript
JavaScript将数组转换为链表的方法
Feb 16 Javascript
浅谈react路由传参的几种方式
Mar 23 Javascript
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
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
Zerg兵种介绍
2020/03/14 星际争霸
从php核心代码分析require和include的区别
2011/01/02 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
python hook监听事件详解
2018/10/25 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python 批量将中文名转换为拼音
2021/02/07 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
美国在线珠宝商店:SZUL
2017/02/11 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
会展策划与管理专业求职信
2014/06/09 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
自我工作评价范文
2015/03/06 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
java开发双人五子棋游戏
2022/05/06 Java/Android