【发布时间】:2019-06-21 03:26:06
【问题描述】:
我使用 parseInt 将字符串转换为十六进制值,但 parseInt("BG", 16) 的结果是 11。我认为它必须是 NaN。这里发生了什么?
【问题讨论】:
-
同理
parseInt("12abc")返回12。"如果parseInt遇到指定基数中不是数字的字符,它会忽略它和所有后续字符,并返回解析后的整数值到那时。”
标签: javascript
我使用 parseInt 将字符串转换为十六进制值,但 parseInt("BG", 16) 的结果是 11。我认为它必须是 NaN。这里发生了什么?
【问题讨论】:
parseInt("12abc")返回12。"如果parseInt遇到指定基数中不是数字的字符,它会忽略它和所有后续字符,并返回解析后的整数值到那时。”
标签: javascript
parseInt 的第二个参数是基数。在base 16中,“BG”中的“B”对应11(9 = 9, 10 = A, 11 = B),而G不在base 16的范围内(即0-9和A-F),所以它被忽略。
所以,结果和parseInt('B', 16)一样:
console.log(parseInt('B', 16));
【讨论】:
parseInt 函数将其第一个参数转换为字符串,解析 该字符串,然后返回一个整数或 NaN。
如果 parseInt 在 指定的基数,它会忽略它以及所有后续字符和 返回解析到该点的整数值。 parseInt 截断 数字到整数值。允许前导和尾随空格。
在第一个示例中,B 可以解析为整数,因此它返回,但在第二个示例中,G 超出了十六进制值的范围,因此它返回 NaN
console.log(parseInt("BG", 16))
console.log(parseInt("GB", 16))
【讨论】: