zoukankan      html  css  js  c++  java
  • 十进制转化为2/8/16

    <?php 
    /*
     * 十进制转二进制、八进制、十六进制
     * @params $data 将哪个十进制数转化,  $decimal 转成哪个进制,$decimal=2/8/16
     */
     function decimalT($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");
    
        if(!in_array($decimal, $arr)){
            return ;
        }
        
        $data = intval($data);    //转化为整形
        $remainder = 0;
        $remainderStr = '';
        
        
        $remainder = ($data%$decimal) == 0?0:$data%$decimal;
        if($decimal == 16 && $remainder>=10){
            $remainderStr .= $remainderArr[$remainder];
        }else{
            $remainderStr .= $remainder;
        }
        
        $temp = intval($data/$decimal);
        while($temp != 0){
            $remainder = ($temp%$decimal) == 0?0:($temp%$decimal);
            if($decimal == 16 && $remainder>=10){
                $remainderStr .= $remainderArr[$remainder];
            }else{
                $remainderStr .= $remainder;
            }
            $temp = intval($temp/$decimal);
        }
        
        $newArr = array_flip($arr);
        return $newArr[$decimal].strrev($remainderStr);
     }
     
     
     var_dump(decimalT(10, 2)); //0b1010
     var_dump(decimalT(7, 8));    //07
     var_dump(decimalT(31, 16)); //0x1f
  • 相关阅读:
    关于在Linux下的换行符 和windows下的换行符
    Linux文件操作标准接口
    tcpdump抓包和wireshark解包
    Makefile学习(1)
    域名服务器设置
    Linux系统移植(1)
    SQL基本语句整理
    ARM---搭建开发板的开发环境(x210v3s)
    C语言基础
    Oracle中的USEREVN()
  • 原文地址:https://www.cnblogs.com/yuwensong/p/5139276.html
Copyright © 2011-2022 走看看