[英]Moved from Windows 32 Bit to Linux 64 Bit, base_convert() issues
我在Windows 64位上使用32位php。 使用base_convert在我移至Centos 64位后,使用64位php返回不同的结果。 例如:
<?php
$input = 'f00706ff';
$result = (int)base_convert($input,16,10);
echo $result;
?>
在Win64 PHP32-> 2147483647;
在CentOS64上,PHP64-> 4026992383;
有什么帮助吗?
您的Windows值是错误的,因为您的十六进制值超出了32位整数的范围(对于有符号整数,基数10中的最大值为2147483647),并且您正在运行PHP的32位版本。 Linux结果是正确的:)
还要注意,如果您想在Windows上正确执行该操作,则可以使用GNU Multiple Precision库,如下所示: $result = gmp_strval( gmp_init('f00706ff', 16), 10 );
尽管在PHP的32位平台上使用大小为整数的整数似乎至少可以说不愉快。
找到了解决方案。
<?php
$input = 'f00706ff';
$result = (int)base_convert($input,16,10);
if($result > 2147483647) $result = 2147483647;
echo $result;
?>
其中2147483647 = 32位中的PHP_INT_MAX
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.