我使用parseInt将字符串转换为十六进制值,但是parseInt("BG", 16)
的结果为11。我认为它一定是NaN。这是怎么回事?
答案 0 :(得分:2)
parseInt
的第二个参数是基数。在基数16中,“ BG”中的“ B”对应于11(9 = 9,10 = A,11 = B),并且G不在基数16的范围内(0-9和AF),因此它被忽略。
因此,结果与parseInt('B', 16)
相同:
console.log(parseInt('B', 16));
答案 1 :(得分:1)
parseInt函数将其第一个参数转换为字符串,进行解析 该字符串,然后返回整数或NaN。
如果parseInt遇到一个字符,该字符不是 指定的基数,它将忽略该基数以及所有后续字符,并且 返回解析到该点的整数值。 parseInt截断 数字到整数值。允许使用前导和尾随空格。
在第一个示例B
中可以将其解析为整数,以便返回,但是在第二个示例中,G
超出十六进制值的范围,因此它返回NaN
console.log(parseInt("BG", 16))
console.log(parseInt("GB", 16))