PHP 按位异或与 JavaScript 按位异或

PHP Bitwise XOR vs. JavaScript Bitwise XOR

我正在尝试找到一种方法使 PHP Bitwise XOR 结果与 JavaScript Bitwise XOR 的结果匹配。我遇到了这个问题的不同问题,但都没有答案。以下是其中的一些:

Javascript & PHP Xor equivalent

php bitwise XOR and js bitwise XOR producing different results

JS bitwise XOR operator acts differently from PHP’s counterpart. How to get the same result as PHP returns?

我知道 PHP 使用 64 位与 32 位 JavaScript 相比,但我的问题是,是否有任何手动方法来计算相似的结果?怎样才能让PHP得到和JS类似的结果?

如果数字很短,在JS和PHP中结果总是一样的,但是如果数字很长,就会出现问题。示例:

var a = 234324234232;
var b = 221312312232;
console.log(a^b);

JS 输出:

166587472

PHP代码:

$a = 234324234232;
$b = 221312312232;
echo $a^$b;

PHP 输出:

21641423952

有时 JavaScript 会给出负面结果:

var a = 202338273;
var b = 523511134400;
console.log(a^b);

JS 输出

-272722143

PHP代码:

$a = 202338273;
$b = 523511134400;
echo $a^$b;

PHP 输出:

523713287969

掩码为有符号整数。

$c = ($a ^ $b) & 0xffffffff;
if ($c & 0x80000000)
  $c -= 0x100000000;
echo $c;