php 实现进制相互转换

从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数。连接一起就可以了。 <?php  /**

 *十进制转二进制、八进制、十六进制 不足位数前面补零*  *

 * @param array $datalist 传入数据array(100,123,130)  * @param int $bin 转换的进制可以是:2,8,16

 * @return array 返回数据 array() 返回没有数据转换的格式  */

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(\//不足一个字节长度,自动前面补充0

    }

    $aOutChar[]=$t;   }

  return $aOutChar; }

测试:

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) \ [1]=>

 string(8) \}

array(2) {

 [0]=>

 string(4) \ [1]=>

 string(4) \}

array(2) {

 [0]=>  string(2) \ [1]=>

 string(2) \}

二进制、八进制、十六进制转十进制

这个转换用乘法,如:1101 转十进制:1*2 +1*2 +0*2 +1*2

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4