开发者社区> wensongyu> 正文

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)

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
十进制转换为2进制
十进制转换为2进制
9 0
其他进制转十进制 | 学习笔记
简介:快速学习其他进制转十进制
34 0
十进制转为其他进制|学习笔记
快速学习十进制转为其他进制。
31 0
4、进制(二进制、八进制、十进制、十六进制)
4、进制(二进制、八进制、十进制、十六进制)
83 0
二. 进制
为什么要学习进制 因为计算机只认识二进制, 也就是0和1, 为了更好地学习计算机, 我们要深入的理解学习进制
43 0
进制转换: 十进制转换成其他进制(一)
进制转换: 十进制转换成其他进制(一)
80 0
C# 36进制转10进制
代码是Java转过来的,变量名都没有改……有空再整理一下好了。       public long toDecimal(string input, long bs)    {        try        {            long Bigtemp = 0, temp = 1;            int len = input.
1008 0
OpenJudge 2972(确定进制)
时间限制: 1000ms 内存限制: 65536kB 描述 6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的。即, 6(13) * 9(13) = 42(13), 而 42(13) = 4 * 131 + 2 * 130 = 54(10)。
707 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载