gpt4 book ai didi

php - 在 32 位系统中对 64 位整数使用位操作(无 php_gpm 扩展)

转载 作者:搜寻专家 更新时间:2023-10-31 21:45:35 24 4
gpt4 key购买 nike

我找到了一些解决方案 Efficient way of doing 64 bit rotate using 32 bit values但它不在 PHP 中。

最大的问题是我从远程服务器获取大整数 9223372036854775808(10) 作为 十六进制 8000000000000000(16)

无法在生产服务器上启用 php_gmp(扩展),但我必须检查接收到的值中的选定位。生产和开发服务器都是 32 位机器

最佳答案

您可以使用 BC Math(任意精度数学)完成此操作:

BC Math 允许您对数字执行数学运算。使用算术运算符和使用 BC Maths 的区别在于,BC Math 不是将数字存储为整数或 float ,而是将数字作为字符串返回。

http://php.net/manual/en/ref.bc.php

PHP 必须用 BC Math 编译;然而大多数 PHP 安装应该有这个。

不幸的是,您不能对字符串进行按位运算,而且 BC Math 没有任何内置的按位函数。然而;经过一些谷歌搜索后,我找到了以下代码示例,并将其复制并粘贴到下面:

function bitValue($no) { return bcpow(2, $no); }
function bitSet($no, $value) {
$tmp = bcmod($value, bitValue($no+1));
return bccomp(bcsub($tmp, bitValue($no)), 0)>= 0;
}

echo bitSet(49, bitValue(48)) ."\n";
echo bitSet(48, bitValue(48)) ."\n";
echo bitSet(47, bitValue(48)) ."\n";

(感谢 hernst42)

关于php - 在 32 位系统中对 64 位整数使用位操作(无 php_gpm 扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4367469/

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