您的当前位置:首页>全部文章>文章详情

php16进制转10进制(浮点数)

发表于:2024-05-29 08:59:02浏览:133次TAG: #16进制转10进制 #进制转换 #PHP

引言

php中如何把16进制转10进制(浮点数)

方法

if (!function_exists('hex_dec_float')) {
    /**
     * 16进制转10进制,浮点数
     * @param $strHex
     * @return float|int
     */
    function hex_dec_float($strHex){
        $v= hexdec($strHex);
        $flag = $v >> 31;
        if($v >=(1<< 31)) {
            $v = $v & ((1 << 31) - 1);
        }
        $x=($v&((1<<23)- 1))+(1<<23)*($v >>31 | 1);
        $exp=($v >>23 & 0xFF)- 127;
        $res =round( $x*pow(2,$exp -23),3);
        if($flag< 0 && $res) {
            $res = -$res;
        }
        return $res;
    }
}