我得到了一些奇怪的结果,其中 2 个相同的函数(一个在 PHP 中,一个在 javascript 中)返回不同的结果。
这两行代码的输入是相同的:
a = 4653896912;
b = 13;
我仔细检查了变量类型,两个变量都是 JS 中的数字和 PHP 中的整数。
PHP 的代码行是这样的:
$a = $a >> $b;
对于 Javascript,它是这样的:
a = a >> b;
您希望a在两者之后具有相同的值,但我得到以下信息:
PHP: $a = 568102
JS: a = 43814
在这一点上,这完全让我感到困惑。
事实证明,这绝对是使用 64 位整数的 PHP 和仅使用 32 位的 JS 的问题。我现在面临的问题是我需要让 PHP 使用 32 位整数进行这些计算。我发现其他人编写的一个函数看起来应该可以工作,但它似乎根本没有改变我的输出。
private static function toInt32(&$x) {
$z = hexdec(80000000);
$y = (int) $x;
if($y ==- $z && $x <- $z){
$y = (int) ((-1) * $x);
$y = (-1) * $y;
}
$x = $y;
}