我正在使用 32 位 php 在 Windows 64 位上工作。使用 base_convert 在我使用 64 位 php 迁移到 Centos 64 位后,会返回不同的结果。例如:
<?php
$input = 'f00706ff';
$result = (int)base_convert($input,16,10);
echo $result;
?>
在 Win64 PHP32 -> 2147483647 上;
在 CentOS64 PHP64 -> 4026992383;
有什么帮助吗?
最佳答案
您的 Windows 值是错误的,因为您的十六进制值超出了 32 位整数的范围(2147483647 是有符号整数以 10 为底的最大值)并且您运行的是 PHP 的 32 位版本。 Linux结果是正确的:)
另请注意,如果您想在 Windows 上正确执行操作,可以使用 GNU 多精度库,如下所示:$result = gmp_strval( gmp_init('f00706ff', 16), 10 );
尽管在 PHP 的 32 位平台上处理大小的整数似乎至少可以说是不愉快的。
关于php - 从 Windows 32 位移动到 Linux 64 位,base_convert() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480635/