var n = parseInt("100",8); alert(n); //结果位:64
这个 parseInt()函数是怎么计算的?
var s="100"; var pow=8; var r=0; for(var i=0;i<s.length;i++){ r=Number(s.charAt(i))+r*pow } console.log(r);
就是这个逻辑,但是想知道64的组成,
@殷敏峰: 什么组成,8进制的100转换不就是10进制的64么?
@殷敏峰: 8的二次方乘以1
进制表示法的实质就是用幂指数来表示数字。
比如八进制的100;
个位 0*8^0
十位 0*8^1
百位 1*8^2
累加得64
http://www.w3school.com.cn/jsref/jsref_parseInt.asp
parseInt("10"); //返回 10 parseInt("19",10); //返回 19 (10+9) parseInt("11",2); //返回 3 (2+1) parseInt("17",8); //返回 15 (8+7) parseInt("1f",16); //返回 31 (16+15) parseInt("010"); //未定:返回 10 或 8
那64是怎么来的?8+7+6+5.。。?
@殷敏峰: 正常情况的数值下就是进制转换。
@殷敏峰: 108.109 不可能是8进制的数值,所以应该是异常的。但是为什么显示8就不清楚了。
@Mr.LiuP: 因为8跟9不是8进制的有效数字,所以只会读入10,8进制的10就是10进制的8,所以结果为8
@浅草青晨: 原来如此。
前面一个为值,后面一个参数为进制
将 100 的八进制 转换为十进制 就是 64
2楼真相