In Javascript
p = 105874240;
105874240
p << 5;
-906991616
但在 PHP 中
php > echo $p = 105874240;
105874240
php > echo $p << 5;
3387975680
我搜索了一些关于不同的介绍,因为Javascript使用签名的int32。但是我找不到正确的解决方案,一切都不适合我。
你能告诉我发生了什么,以及我如何在PHP中获得Javascript的相同结果。谢谢。
这就是我的做法。
function to32bits($value)
{
$value = ($value & 0xffffffff);
if ($value & 0x80000000) $value = -((~$value & 0xffffffff) + 1);
return $value;
}
$p = 105874240;
echo to32bits($p << 5); // -906991616