2/8/16 转10进制

简介:
<?php 
/*
 * 二进制、八进制、十六进制转十进制
 * @params $data 将该二进制数转10进制 $decimal 指定传进来的是几进制的数
 */
 function tDecimal($data, $decimal){
     //如果为空直接返回
     if(empty($data) && empty($decimal)){
         return ;
     }
    
    $arr = array("0b"=>2,"0"=>8,"0x"=>16);
    $remainderArr = array(10=>'a', 11=>'b', 12=>"c", 13=>'d', 14=>"e", 15=>"f");
    $remainderArr_rev = array_flip($remainderArr);

    if(!in_array($decimal, $arr)){
        return ;
    }
    
    $newData = (string)$data;    //强制转化为字符串

    $num = 0;
    $len = strlen($newData);
    for($i=0;$i<$len;$i++){
        if($decimal == 16 && in_array($newData[$i], $remainderArr)){
            $num += $remainderArr_rev[$newData[$i]]*pow($decimal,$len-$i-1);
        }else{
            $num += $newData[$i]*pow($decimal,$len-$i-1);
        }
    }

    return $num;
 }
 
var_dump(tDecimal("101", 2));    //int(5) 
var_dump(tDecimal("07", 8));    //int(7)
var_dump(tDecimal("1f", 16));    //int(31)

 

目录
相关文章
|
6月前
进制介绍
进制介绍
43 3
|
7月前
进制的详细介绍
进制的详细介绍
95 2
|
7月前
进制介绍详解
进制介绍详解
39 1
|
7月前
十进制转二、十六进制
十进制转二、十六进制
22 0
十进制转换为2进制
十进制转换为2进制
67 0
十进制转换为2进制
|
存储 机器学习/深度学习 算法
C#实现十六进制和十进制相互转换【及不同进制表示】
在程序中,十六进制的表示形式通常为字符串;而十进制则为数字整型(本质的内存存储都是01二进制)。数字的进制表示一般使用的不多,通常最大的需求是进制之间的相互转换。C#中提供了内置的转换方法...
470 0
C#实现十六进制和十进制相互转换【及不同进制表示】
|
Go 开发者
其他进制转十进制 | 学习笔记
简介:快速学习其他进制转十进制
94 0
|
Go 开发者
十进制转为其他进制|学习笔记
快速学习十进制转为其他进制。
87 0
十进制转为其他进制|学习笔记
|
机器学习/深度学习 程序员 C++
4、进制(二进制、八进制、十进制、十六进制)
4、进制(二进制、八进制、十进制、十六进制)
280 0
4、进制(二进制、八进制、十进制、十六进制)