如何将浮点转换为64位二进制或32位浮点转换为64位int-php
我有一个浮点变量,它的值是:8546033237 我想将其转换为64位二进制,并使用这种方式将其转换为二进制:如何将浮点转换为64位二进制或32位浮点转换为64位int-php,php,floating-point,binary,Php,Floating Point,Binary,我有一个浮点变量,它的值是:8546033237 我想将其转换为64位二进制,并使用这种方式将其转换为二进制: $a = 8546033237; $b = pack("f",$a); 这样给我一个32位的值,而不是64位。 然后当我把它转换回数字时,给我这个: $a = unpack("f",$b); var_dump($a); 结果是:浮动8546033152 结果与初始值不相等 现在,如何正确地将其转换为64位二进制,反之亦然???在手册中,您的答案是93085我使用这种方式将32位浮点
$a = 8546033237;
$b = pack("f",$a);
这样给我一个32位的值,而不是64位。
然后当我把它转换回数字时,给我这个:
$a = unpack("f",$b);
var_dump($a);
结果是:浮动8546033152
结果与初始值不相等
现在,如何正确地将其转换为64位二进制,反之亦然???在手册中,您的答案是93085我使用这种方式将32位浮点转换为64位二进制:
function float2binary64($in){
$k = '';
while (!in_array($in,array(0,1))) {
$k .= abs($in % 2);
$in = floor($in / 2);
}
$k .= $in;
$j = strlen($k);
for($i=0; $i< (64-$j); $i++){
$k .="0";
}
$j = 0;$l[$j] = '';$m=0;
for($i=63; $i>= 0; $i--){
if ($m == 32) {$j++; $l[$j] = '';$m=0;}
$l[$j] .= $k[$i];
$m++;
}
$high = bindec($l[0]);
$low = bindec($l[1]);
$bin = pack("N*",$high,$low);
return $bin;
}
我读过它,但我不明白如何使用它将浮点转换成二进制。请解释更多您的服务器是支持64位的机器和PHP发行版吗?不,我的PHP版本是5.4.3,不支持64位整数