我对尝试将十六进制值转换为十进制值的代码有一些问题。无论是小整数还是大整数,有时,该函数都会返回我转换为十进制的十六进制,尾随为 8 个 ceros。例如:它应该返回 72500 并返回 72500.00000000 它是随机的,我认为代码“是正确的”。
好一个:
stdClass Object
(
[BlockHeight] => 7503088
[BlockHeightHash] => 0x58daab46cb25e887985d8d22d735147a5d92a226316223de04dc7b0ae265f7a7
)
错误一:
stdClass Object
(
[BlockHeight] => 7503088.0000000000
[BlockHeightHash] => 0x58daab46cb25e887985d8d22d735147a5d92a226316223de04dc7b0ae265f7a7
)
程序
public static function HexDec(string $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 (string)$dec;
return $dec;
//return sprintf('%.0F',$dec);
}