我需要对大数字进行按位操作。
例如:
2 | 2147483648
我希望2147483650
,而是获得-2147483646
为什么会这样,我该怎么办?
注意,我正在处理的代码是一些旧的javascript代码,它在经典的asp中运行服务器端,我相信它是旧版本的js
答案 0 :(得分:0)
我找到了解决方法。
您可以稍微修改BigInteger.js
库,以便在使用Classic ASP的服务器端JS中使用。
https://raw.githubusercontent.com/peterolson/BigInteger.js/master/BigInteger.js
要在经典asp中使用,请执行以下操作:
修改BigInteger.js
库的第21行和第28行,使其在服务器端使用经典ASP:
更改第21行:
BigInteger.prototype = Object.create(Integer.prototype);
要:
BigInteger.prototype = new Object(Integer.prototype);
对第28行进行相同的更改。
然后,删除最后4行。不需要它们:
// Node.js check
if (typeof module !== "undefined" && module.hasOwnProperty("exports")) {
module.exports = bigInt;
}
然后在你的脚本中包括它:
<script language="javascript" runat="server">
... the bigInteger.js code...
function bitOrJS(a, b) {
var big = new bigInt(a);
return big.or(b);
}
</script>
您现在可以在经典的ASP vbscript代码中使用该函数:
Dim result
result = bitOrJS(2147483648, 2)
response.write result
按预期输出2147483650
。