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 异步处理进度条
Apr 01 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
Oct 01 Javascript
jquery获取元素索引值index()示例
Feb 13 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
Apr 10 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
Feb 15 Javascript
JavaScript之map reduce_动力节点Java学院整理
Jun 29 Javascript
对layui数据表格动态cols(字段)动态变化详解
Oct 25 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
微信小程序实现多选框功能的实例代码
Jun 24 Javascript
抖音短视频(douyin)去水印工具的实现代码
Mar 30 Javascript
vue实现登陆页面开发实践
May 30 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
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
js三种排序算法分享
2012/08/16 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
Python实例一个类背后发生了什么
2016/02/09 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
python 把列表转化为字符串的方法
2018/10/23 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
应届大学生自荐信
2013/12/05 职场文书
自我反省检讨书
2014/01/23 职场文书
物理研修随笔感言
2014/02/14 职场文书
销售队伍口号
2014/06/11 职场文书
家长会主持词开场白
2015/05/29 职场文书
校友会致辞
2015/07/30 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电