加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在32位系统上将64位整数十六进制字符串转换为64位十进制

发布时间:2020-12-13 16:46:35 所属栏目:PHP教程 来源:网络整理
导读:什么是将编码为十六进制字符串的64位整数转换为32位系统上的十进制字符串的简单方法.它必须是完整的价值,它不能用科学记数法或截断:/ “0c80000000000063”==“900719925474099299” “0c80000000000063”!= 9.007199254741E 17 PHP的base_convert()和hexd
什么是将编码为十六进制字符串的64位整数转换为32位系统上的十进制字符串的简单方法.它必须是完整的价值,它不能用科学记数法或截断:/

“0c80000000000063”==“900719925474099299”

“0c80000000000063”!= 9.007199254741E 17

PHP的base_convert()和hexdec()不能正常工作.

解决方法

您需要使用 BC Math PHP扩展(捆绑).

首先拆分输入字符串以获得高字节和低字节,然后将其转换为十进制,然后通过BC函数进行计算,如下所示:

$input = "0C80000000000063";

$str_high = substr($input,8);
$str_low = substr($input,8,8);

$dec_high = hexdec($str_high);
$dec_low  = hexdec($str_low);

//workaround for argument 0x100000000
$temp = bcmul ($dec_high,0xffffffff);
$temp2 = bcadd ($temp,$dec_high);

$result = bcadd ($temp2,$dec_low);

echo $result;

/*
900719925474099299
*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读