PHP按位异或和JavaScript按位异或的区别

3
我正在尝试找到一种方法,使PHP位异或的结果与JavaScript位异或的结果相匹配。我遇到了不同的问题,但都没有答案。以下是其中几个例子:
- 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位,而JavaScript只有32位,但我的问题是,是否有任何手动计算相似结果的方法?我们如何使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
1个回答

7

将掩码转换为有符号整数。

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

非常顺利,谢谢! - Ibrahim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接