如何强制PHP处理类似于uint的数字

Pet*_*aud 3 php c# overflow uint32 uint

我有一些C#代码看起来像这样:

uint a = 0x9E3779B9;
a += (uint)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
Run Code Online (Sandbox Code Playgroud)

在那段代码之后,a == 228 452 386

现在我正在尝试将此C#代码转换为PHP,但在PHP中,数字不会以相同的方式溢出:

$a = 0x9E3779B9;
$a += ($url[$k+0] + ($url[$k+1] << 8) + ($url[$k+2] << 16) + ($url[$k+3] << 24));
Run Code Online (Sandbox Code Playgroud)

在那段代码之后,$ a == 4 523 419 682

在两个coses中,"url"被视为ascii值的数组.返回相同的结果,直到$ a被添加到第二行的结果.那时C#uint溢出到2.28亿.PHP变得"聪明"并提出了"正确"的答案.

但我想要C#给出的溢出答案.我该怎么办?

ken*_*ytm 5

完成后,添加a $a &= 0xFFFFFFFF将值重新置于32位范围内+=.

(见:http://www.ideone.com/6BR0U)