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

php16进制转10进制(正负数)

发表于:2024-05-16 17:14:55浏览:282次TAG: #PHP #16进制 #2进制 #10进制 #转换

引言

我们需要先了解下负整数转换为16进制表示法,如图所示

php没有提供直接正负数16进制转10进制的方法,我们需要造这样的方法。

方法

if (!function_exists('hex_dec')) {
    /**
     * 16进制转10进制,并区分正负数
     * @param $str
     * @return float|int
     */
    function hex_dec($str){
        // 一般说明带符号 第一个字符小于8为正数(0-7) 不小于8为负数(8-F)
        if(hexdec($str[0]) < 8){
            return hexdec($str);
        }
        $bin = decbin(hexdec($str)-1);
        $strlen = strlen($bin);
        $fan = '';
        for ($i=0; $i < $strlen; $i++) {
            if($bin[$i] == 0){
                $fan .= '1';
            }else{
                $fan .= '0';
            }
        }
        return -bindec($fan);
    }
}