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 */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |