现在的位置: 首页 > 综合 > 正文

js进制转换两则

2012年10月01日 ⁄ 综合 ⁄ 共 575字 ⁄ 字号 评论关闭

1.why does parseInt(1/0, 19) return 18? who know?

 

首先看看 1/0 到底是什么:

1/0
Infinity
1/0 === 'Infinity'
false
1/0 == 'Infinity'
true
 
所以表达式转换
 parseInt(1/0, 19)  =>  parseInt('Infinity', 19)  => parseInt('I', 19)  (因为19进制最大只有18,超过了i后面的就不认了),所以结果是 18
 
那么
 parseInt('J', 20) 等于什么?
 

2.1457771337246..toString(36)
 
首先想一串数字后面跟两个点??很奇怪,仔细一分析,有可能是这样: 1457771337246.  .toString(36) 浮点数就是个对象了,Int就不是了,奇怪。奇怪就奇怪,也能接受。
 
上面代码执行的结果是 iloveyou ,然后心想,可否有其他的数字,可以转换成其他字符?
 
(function(s,h){var c=[],l=s.length;s.replace(/./g,function(s,i){c.push(Math.pow(h,l-i-1)*parseInt(s,h));});return eval(c.join('+'))+.0;})('iloveyou',36 ).toString(36);
 

抱歉!评论已关闭.