我使用两种方法将十六进制字符串转换为十进制。使用 intval 函数,其中我传递 16 基数作为第二个参数,将十六进制字符串转换为十进制。我使用 hexdec 内置函数做同样的事情。两者都返回不同的答案。
我可以知道这两个函数输出背后的原因吗?
$a = 'efdebd76';
echo 'intvar : '. intval($a,16);
echo '<br/>';
echo 'hexdec : '.hexdec($a);
Output
intvar : 2147483647
hexdec : 4024352118
最佳答案
来自 php 手册中关于“intval”函数的内容:
Return Values: The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
所以我猜你在32位系统上运行intval,因为它返回值2147483647,并且0xefdebd76的值大于最大整数值。 在hex_string中,它似乎不受您执行此函数的系统的限制。
关于javascript - 为什么在 PHP 中使用 intval 和 hexdec 内置函数的十六进制到十进制字符串输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57159162/