gpt4 book ai didi

c# - 如何强制 PHP 将数字视为 uint

转载 作者:可可西里 更新时间:2023-11-01 00:52:31 26 4
gpt4 key购买 nike

我有一些如下所示的 C# 代码:

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

在那段代码之后,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));

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

在这两种情况下,“url”都被视为一个 ascii 值数组。在将 $a 添加到第二行的结果之前,返回相同的结果。那时,C# uint 溢出到约 2.28 亿。 PHP 变得“聪明”并给出了“正确”的答案。

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

最佳答案

添加 $a &= 0xFFFFFFFF 以在完成 += 后将值放回 32 位范围。

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

关于c# - 如何强制 PHP 将数字视为 uint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com