<?php
//echo decbin(12);
/*function getval($n) {
$str = 0;
while($n!=0) {
//var_dump('000');
//exit;
if($n%2!=1) {
echo '999';
echo $str;
$str.=$n%2;
}
if($n%2==1)
{
echo '777';
echo $str;
$str.=$n%2;
}
return $str;
}//while end
//return $str;
}
$n = 13;
echo getval($n);
*/
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);
//var_dump($datalist); //array(1) { [0]=> int(12) }
if($bin==10) return $datalist; //相同进制忽略
$bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度
//var_dump($bytelen); //float(8)
$aOutChar=array();
foreach ($datalist as $num)
{
$t="";
$num=intval($num);
//var_dump($num); //int(12)
if($num===0) continue;
while($num>0)
{
//var_dump($num); //int(12) float(6) float(3) float(1)
//var_dump($bin); //int(2) int(2) int(2) int(2)
//var_dump($num%$bin); //int(0) int(0) int(1) int(1)
//var_dump($arr[$num%$bin]); //int(0) int(0) int(1) int(1)
$t=$arr[$num%$bin].$t;
//var_dump($t); //string(1) "0" string(2) "00" string(3) "100" string(4) "1100"
$num=floor($num/$bin);
//var_dump($num); //float(6) float(3) float(1) float(0)
}
//var_dump($t); //string(4) "1100"
$tlen=strlen($t);
//var_dump($tlen); //int(4)
//var_dump($tlen%$bytelen); //int(4)
if($tlen%$bytelen!=0)
{
$pad_len=$bytelen-$tlen%$bytelen;
//var_dump($pad_len); //float(4)
$t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0
}
//var_dump($t); //string(8) "00001100"
$aOutChar[]=$t;
}//foreach end
return $aOutChar;
}
//var_dump(decto_bin(array(12),2)); //array(1) { [0]=> string(8) "00001100" }
//var_dump(decto_bin(array(12),10)); //array(1) { [0]=> int(12) }
var_dump(decto_bin(array(12),2));
//var_dump(decto_bin(array(128,253),8));
//var_dump(decto_bin(array(128,253),16));
?>
//echo decbin(12);
/*function getval($n) {
$str = 0;
while($n!=0) {
//var_dump('000');
//exit;
if($n%2!=1) {
echo '999';
echo $str;
$str.=$n%2;
}
if($n%2==1)
{
echo '777';
echo $str;
$str.=$n%2;
}
return $str;
}//while end
//return $str;
}
$n = 13;
echo getval($n);
*/
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);
//var_dump($datalist); //array(1) { [0]=> int(12) }
if($bin==10) return $datalist; //相同进制忽略
$bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度
//var_dump($bytelen); //float(8)
$aOutChar=array();
foreach ($datalist as $num)
{
$t="";
$num=intval($num);
//var_dump($num); //int(12)
if($num===0) continue;
while($num>0)
{
//var_dump($num); //int(12) float(6) float(3) float(1)
//var_dump($bin); //int(2) int(2) int(2) int(2)
//var_dump($num%$bin); //int(0) int(0) int(1) int(1)
//var_dump($arr[$num%$bin]); //int(0) int(0) int(1) int(1)
$t=$arr[$num%$bin].$t;
//var_dump($t); //string(1) "0" string(2) "00" string(3) "100" string(4) "1100"
$num=floor($num/$bin);
//var_dump($num); //float(6) float(3) float(1) float(0)
}
//var_dump($t); //string(4) "1100"
$tlen=strlen($t);
//var_dump($tlen); //int(4)
//var_dump($tlen%$bytelen); //int(4)
if($tlen%$bytelen!=0)
{
$pad_len=$bytelen-$tlen%$bytelen;
//var_dump($pad_len); //float(4)
$t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0
}
//var_dump($t); //string(8) "00001100"
$aOutChar[]=$t;
}//foreach end
return $aOutChar;
}
//var_dump(decto_bin(array(12),2)); //array(1) { [0]=> string(8) "00001100" }
//var_dump(decto_bin(array(12),10)); //array(1) { [0]=> int(12) }
var_dump(decto_bin(array(12),2));
//var_dump(decto_bin(array(128,253),8));
//var_dump(decto_bin(array(128,253),16));
?>