javascript - 为什么在 PHP 中使用 intval 和 hexdec 内置函数的十六进制到十进制字符串输出不同?

标签 javascript php hex

我使用两种方法将十六进制字符串转换为十进制。使用 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/

相关文章:

php - 摘要中显示每个类别的最新 5 张图像

php - 如何在 CodeIgniter 的 Controller 内覆盖配置数组?

mysql - 将列的默认显示设置为十六进制格式

java - 使用java将较大值的十六进制字符串转换为字节

javascript - 使用 jquery 加载 json 嵌套对象

javascript - 水平居中 float div

javascript - 根据当前 URL 中的字符串修改源

c++ - 如何在 C++ 中将十六进制值的字符数组转换为单个整数值?

javascript - 禁用基于 Angular 方法的选项

javascript - http post 返回错误,而 $.ajax 不返回错误