当我运行此函数时,该值显示为26.我想知道系统使用什么计算以及为什么评估为26。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>parseint</title>
<script type="text/javascript">
var par= "1a";
alert (parseInt(par,16))
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:8)
parseInt
的第二个参数是基数。它显示了使用的基础。基数16是十六进制,基数16中的1a
在基数10(十进制)中是26
。
这就是使用parseInt
时始终指定基数的重要性。在这种情况下,不提供基数将导致值1
,因为它试图解析基数10中的数字,获取字符a
,放弃并返回到目前为止找到的数字:
parseInt("1a"); //1
parseInt("1a", 10); //1 (same as above)
parseInt("1a", 16); //26
但是,如果数字以字符0x
或0X
开头,则假定它是十六进制数,并且您可以省略基数(尽管建议始终通过基数以避免不必要的副作用):
parseInt("0x1a"); //26
答案 1 :(得分:3)
parseInt
的第二个参数是radix,您已指定1a
表示基数为16(或Hexadecimal)的整数。
快速查看任何旧版hexadecimal to decimal lookup table都会显示十六进制1a
确实等效于十进制26
答案 2 :(得分:1)
看起来像是将1a从十六进制转换为十进制
答案 3 :(得分:1)
它只是基本的16(你明确要求)。
16s列中有一个1(因此它是16),而1s列中有一个a(因此它是10)。 10 + 16是26。
答案 4 :(得分:1)
您正在将1A解析为16的基数。 所以这就是
1 * 16^1 + 10 * 16^0 = 16 + 10 = 26
答案 5 :(得分:0)
1a是26的十六进制。您经常在HTML颜色中遇到像“1a”或“ff”这样的值。 “ff”是16x16或256,是最高的两位十六进制值。
有关详细信息,请参阅http://en.wikipedia.org/wiki/Hexadecimal。