我找到了一个将十六进制转换为浮点数的代码。我的数字也是负数,但在转换后我没有得到它。是否有可能从十六进制转换为带负数的浮点数? 我发现的代码:
function hexTo32Float($strHex) {
$v = hexdec($strHex);
$x = ($v & ((1 << 23) - 1)) + (1 << 23) * ($v >> 31 | 1);
$exp = ($v >> 23 & 0xFF) - 127;
return $x * pow(2, $exp - 23);
}
要测试的数字: c57be300 - &gt; 4030.1875,但应该是负-4030.1875。