How to get binary representation of floating-point number in PHP?

前端 未结 4 1226
长情又很酷
长情又很酷 2021-01-17 16:18

Is there any way to get the binary representation of a floating point number in PHP? Something like Java\'s Double.doubleToRawLongBits().

Given a positive floating p

4条回答
  •  没有蜡笔的小新
    2021-01-17 16:37

    java:

    long lnBits = Double.doubleToLongBits(longValue);
    Byte[] bits = new byte [] {
       (byte) ((value << 56) >>> 56),
       (byte) ((value << 48) >>> 56),
       (byte) ((value << 40) >>> 56),
       (byte) ((value << 32) >>> 56),
       (byte) ((value << 24) >>> 56),
       (byte) ((value << 16) >>> 56),
       (byte) ((value << 8) >>> 56),
       (byte) (value >>> 56)}
    

    php:

    $bits = $bitsFromJava;
    $str="";
    for($i=0;$i<8;i++){
        $str.=chr($bits[$i]);
    }
    $longValue=unpack('d',$str);
    
    $bitsToJava=array();
    for(str_split(pack($longValue)) as $chr){
        $bitsToJava[]=ord($chr);
    }
    

提交回复
热议问题