当前位置:编程学习 > php >>

php十进制转换为二进制、八进制、十六进制函数代码

复制代码 代码如下:
<?php 
/**
 *十进制转二进制、八进制、十六进制 不足位数前面补零*
 *
 * @param array $datalist 传入数据array(100,123,130)
 * @param int $bin 转换的进制可以是:2,8,16
 * @return array 返回数据 array() 返回没有数据转换的格式
 * @Author chengmo QQ:8292669
 * @copyright http://www.zzzyk.com/ 
 */
function decto_bin($datalist,$bin)
{
    static $arr=array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');
    if(!is_array($datalist)) $datalist=array($datalist);
    if($bin==10)return $datalist; //相同进制忽略
    $bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度
    $aOutChar=array();
    foreach ($datalist as $num)
    {
        $t="";
        $num=intval($num);
    if($num===0)continue;
        while($num>0)
        {
            $t=$arr[$num%$bin].$t;
            $num=floor($num/$bin);
        }
        $tlen=strlen($t);
        if($tlen%$bytelen!=0)
        {
        $pad_len=$bytelen-$tlen%$bytelen;
        $t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0
        }
        $aOutChar[]=$t;
    }
    return $aOutChar;
}
?>

测试代码:
复制代码 代码如下:
<?php
var_dump(decto_bin(array(128,253),2));
var_dump(decto_bin(array(128,253),8));
var_dump(decto_bin(array(128,253),16));

X-Powered-By: PHP/5.2.0
Content-type: text/html

array(2) {
  [0]=>
  string(8) "10000000"
  [1]=>
  string(8) "11111101"
}
array(2) {
  [0]=>
  string(4) "0200"
  [1]=>
  string(4) "0375"
}
array(2) {
  [0]=>
  string(2) "80"
  [1]=>
  string(2) "FD"
}?>

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,