gpt4 book ai didi

C#.NET 到 PHP 相同的代码但结果不同

转载 作者:行者123 更新时间:2023-11-30 21:31:14 24 4
gpt4 key购买 nike

C#.NET:

public int NextRandom(int n) {
int n2 = (n + 7) * 3;
n = ((int)((uint)n >> 8) | n << 24);
n ^= ((int)((uint)n >> 7) & 0x3FF) * ((int)((uint)n >> 22) & 0x3FF) + 5 * (n2 + 3);
return n;
}
NextRandom(1337);

C# 返回:956321482

PHP:

public function NextRandom($n) {
$n2 = ($n + 7) * 3;
$n = ((int)(abs($n) >> 8) | $n << 24);
$n ^= ((int)(abs($n) >> 7) & 0x3FF) * ((int)(abs($n) >> 22) &
0x3FF) + 5 * ($n2 + 3);
return $n;
}
NextRandom(1337);

PHP 返回:22431157962

我的 PHP 代码有什么问题?坦克求助。

已解决:我加了

$n &= 0xFFFFFFFF;

将整数放回到 32 位范围内。

最佳答案

你的操作结果是22431157962PHP显示的值

但是 int(32bit) 可以显示的最大值是 2147483647,所以它不适合你定义的返回类型(int),尝试将返回类型更改为 long(64 位) number)(+任何其他 Actor ,如果需要的话)你应该没问题,不是 PHP 的高手,但我认为 PHP 在这种情况下使用 64 位数字

只是为了获得更多调试信息,调试方法是查看十六进制值
956321482 = 0x39004ECA
22431157962 = 0x539004ECA

如果您仔细观察,前 32 位是相同的,但您的数字需要更多

关于C#.NET 到 PHP 相同的代码但结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53488915/

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