正如十六进制手册页上所说:
该函数现在可以将平台整数类型的值转换为大值,在这种情况下,它将以浮点数的形式返回值。
如果要获取某种大整数(不是浮点数),则需要将其存储在字符串中。使用BC数学函数,这可能是可能的。
例如,如果您查看hexdec手册页的注释,您会发现此注释
如果您稍微调整一下该功能,以避免通知,您将获得:
function bchexdec($hex)
{
$dec = 0;
$len = strlen($hex);
for ($i = 1; $i <= $len; $i++) {
$dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i))));
}
return $dec;
}
(这个功能是从我链接到的笔记中复制的;我只是稍微适应了一下)
并将其用于您的号码:
$h = 'D5CE3E462533364B';
$f = bchexdec($h);
var_dump($f);
输出将为:
string '15406319846273791563' (length=20)
所以,不是你的那种大浮子;并且似乎可以满足您的期望:
计算结果.exe = 15406319846273791563
希望这个帮助;-)
而且,是的,PHP文档上的用户注释有时是一个真正的金矿;-)