大值的按位或

时间:2016-12-27 14:45:38

标签: javascript vbscript asp-classic bitwise-operators

我需要对大数字进行按位操作。

例如:

2 | 2147483648

我希望2147483650,而是获得-2147483646

为什么会这样,我该怎么办?

注意,我正在处理的代码是一些旧的javascript代码,它在经典的asp中运行服务器端,我相信它是旧版本的js

1 个答案:

答案 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