Я нашел обходной путь.
Вы можете использовать библиотеку BigInteger.js
с небольшими изменениями для использования на серверной JS с классическим ASP.
https://raw.githubusercontent.com/peterolson/BigInteger.js/master/BigInteger.js
Для использования в классических осины, выполните следующие действия:
Изменение линии 21 и 28 BigInteger.js
библиотеки, поэтому он будет работать на стороне сервера с классическим ASP:
Change Line 21:
BigInteger.prototype = Object.create(Integer.prototype);
To:
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
выход будет be 2147483650
как и ожидалось.
[Побитовые операторы MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) У вас есть 32-битное ограничение с побитовыми операторами JS. –
@hindmost почему ты догадался? op - вы получаете переполнение int Я верю (или, кажется, я мало знаю о манипуляциях с битами в js) – user2717954
См. [Эту статью SO] (http://stackoverflow.com/questions/2983206/bitwise -and-in-javascript-with-a-64-bit-integer # 2983294) для хорошего объяснения и достойной работы. Если вам необходимо выполнить побитовые операции с 64-битными значениями, рассмотрите возможность использования двух 32-битных значений. – RamblinRose