Convertir le nombre décimal en binaire, octal et hexadécimal
Pour convertir du décimal vers d'autres bases, utilisez simplement le nombre pour le diviser par le nombre de base à convertir et lisez le reste. Connectez-les simplement ensemble.
<?php /** *十进制转二进制、八进制、十六进制 不足位数前面补零* * * @param array $datalist 传入数据array(100,123,130) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有数据转换的格式 * @copyright chengmo QQ:8292669 */ 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; }
Test :
var_dump(decto_bin(array(128,253),2));
var_dump(decto_bin(array(128,253),8)); array(128,253),16));
X-Powered-By : PHP/5.2.0
Type de contenu : texte/html
array(2) {
[0] =>
chaîne(8) "10000000"
[1] => =>
chaîne(4) "0200"
[1] =>
chaîne(4) " 0375"
}
array(2) {
[0] =>
string(2) "80"
[1]=>
string(2) " FD"
}
Binaire, Octal, Hexadécimal en Décimal
Cette conversion utilise la multiplication, telle que : 1101 converti en décimal : 1*2^3 1*2^2 0*2^1 1*2 ^0
Code :
Test :
var_dump(bin_todec(array('ff','ff33','cc33'),16)); (array('1101101','111101101'),2));
var_dump(bin_todec(array('1234123','12341'),8)); PHP/5.2.0
<?php /** *二进制、八进制、十六进制 转十进制* * * @param array $datalist 传入数据array(df,ef) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有数据转换的格式 * @copyright chengmo QQ:8292669 */ function bin_todec($datalist,$bin) { static $arr=array('0'=>0,'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,'A'=>10,'B'=>11,'C'=>12,'D'=>13,'E'=>14,'F'=>15); if(!is_array($datalist))$datalist=array($datalist); if($bin==10)return $datalist; //为10进制不转换 $aOutData=array(); //定义输出保存数组 foreach ($datalist as $num) { $atnum=str_split($num); //将字符串分割为单个字符数组 $atlen=count($atnum); $total=0; $i=1; foreach ($atnum as $tv) { $tv=strtoupper($tv); if(array_key_exists($tv,$arr)) { if($arr[$tv]==0)continue; $total=$total+$arr[$tv]*pow($bin,$atlen-$i); } $i++; } $aOutData[]=$total; } return $aOutData; }
[0]=>
int(255)
[1]=> >int(65331)
[2]=>
int( 52275)
}
array(2) {
[0]=> 🎜>[1]=>
int(508)
}
array(2) {
[0]=> >
int(5345)
}
Plus tard, ce ne sont que des méthodes d'implémentation. En fait, peu importe qu'il s'agisse du langage PHP ou d'autres langages, les idées d'implémentation sont les mêmes. PHP a en fait de nombreuses fonctions intégrées pour compléter ce contenu :
bindec(), decoct(), dechex() base_convert() decbin() Ceci est juste une idée d'implémentation.
Pour plus d'articles sur l'implémentation PHP de la conversion de base (binaire, octale, hexadécimale) et sur le code de conversion mutuelle, veuillez faire attention au site Web PHP chinois !