十进制转化为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

 

目录
相关文章
|
23天前
八进制转换为十进制
【10月更文挑战第3天】八进制转换为十进制。
28 2
|
5月前
|
存储
详细讲解,进制转换
详细讲解,进制转换
|
6月前
|
C语言
进制转换间的那点事
进制转换间的那点事
|
6月前
|
存储
进制转换和整型提升
进制转换和整型提升
|
小程序
ABCDEFG(进制转换::小转大)
ABCDEFG(进制转换::小转大)
85 0
十进制转换为2进制
十进制转换为2进制
99 0
十进制转换为2进制
|
JavaScript 前端开发 数据安全/隐私保护
进制转换以及位运算
进制转换以及位运算
156 0
进制转换以及位运算
进制转换详解
进制转换详解
371 0
进制转换详解