js进制转换两则

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);
 
原文地址:https://www.cnblogs.com/webooxx/p/2584932.html