在我开始之前,请不要告诉我不要使用。eval
;我知道输入是完全卫生的,所以它是安全、快速和简单的。
我正在使用一个JavaScript引擎来驱动一个我用Java写的计算器。要做到这一点,我只是简单地将输入连接成一个字符串,然后将它传递给JavaScript。例如,点击按钮 1
, +
和 5
构建字符串的结果 "1+5"
. 我在十六进制的时候也是这样做的,把 0x
前的字母,所以 A
, +
和 8
给我 "0xA+8
. 我的问题来自于其二进制模式的编程。我试着通过 0b1101+0b10
(这就是Java处理二进制字符的方式),但它只是抛出一个错误。我如何在JavaScript中处理二进制字元?
更新。 从ES2015开始,JavaScript支持二进制 Number
字符。
console.log(0b1101+0b10) // 15 (in decimal)
或者,你可以使用一个字符串,并使用 Number.parseInt
以2为基数。
var a = parseInt('1101', 2) // Note base 2!
var b = parseInt('0010', 2) // Note base 2!
console.log(a+b) // 15 (in decimal)
用于显示不同基数的数字。Number#toString
也接受一个基数。
(15).toString(2) // 1111
注:如果直接将用户输入的信息传递给 eval()
,使用regex来确保输入的内容只包含数字和你期望的运算符 (+
, -
、等)。)