我正在使用32位PHP的Windows 64 Bit工作。使用base_convert在我使用64位php移动到Centos 64位后,返回不同的结果。例如:
<?php
$input = 'f00706ff';
$result = (int)base_convert($input,16,10);
echo $result;
?>
在Win64 PHP32上 - &gt; 2147483647;
在CentOS64 PHP64上 - &gt; 4026992383;
任何帮助?
答案 0 :(得分:1)
您的Windows值错误,因为您的十六进制值超出了32位整数的范围(2147483647是基数10中有符号整数的最大值)并且您运行的是PHP的32位版本。 Linux结果是正确的:)
另请注意,如果您想在Windows上正确执行操作,可以使用GNU Multiple Precision库,如下所示:$result = gmp_strval( gmp_init('f00706ff', 16), 10 );
尽管使用的是32位平台上的整数在PHP中似乎至少可以说是不合适的。
答案 1 :(得分:0)
找到了解决方案。
<?php
$input = 'f00706ff';
$result = (int)base_convert($input,16,10);
if($result > 2147483647) $result = 2147483647;
echo $result;
?>
其中2147483647 = 32位的PHP_INT_MAX