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创建的一个图片、视频缓冲的效果样式插件
Aug 28 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
VUE2.0中Jsonp的使用方法
May 22 Javascript
了解前端理论:rscss和rsjs
May 23 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
ThinkPHP实现分页功能
2017/04/28 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
Python实现处理管道的方法
2015/06/04 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
django自带调试服务器的使用详解
2019/08/29 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
公司员工辞职信范文
2015/05/12 职场文书
辛亥革命观后感
2015/06/02 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
Python 视频画质增强
2022/04/28 Python