-1

在我开始之前,请不要告诉我不要使用eval; 我知道输入非常卫生,所以它安全、快速、简单。

我正在使用 JavaScript 引擎来驱动我用 Java 编写的计算器。为此,我只需将输入连接成一个字符串并将其传递给 JavaScript。例如,单击按钮1+5会生成 String "1+5"0x通过在字母之前加上 so A,+8给我,我也得到了十六进制的工作"0xA+8。我的问题来自于对其二进制模式进行编程。我尝试传递它0b1101+0b10(这是 Java 处理二进制文字的方式),但它只是抛出了一个错误。如何在 JavaScript 中处理二进制文字?

4

1 回答 1

2

更新:从 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(),请使用正则表达式来确保输入仅包含数字和您期望的运算符(+-等)。

于 2013-09-30T20:19:13.700 回答