PHP implémente la conversion hexadécimale (binaire, octal, hexadécimal) et le code de conversion mutuelle

高洛峰
Libérer: 2023-03-04 18:50:02
original
2016 Les gens l'ont consulté

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,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;); 
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; 
}
Copier après la connexion

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

Type de contenu : texte/html
<?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(&#39;0&#39;=>0,&#39;1&#39;=>1,&#39;2&#39;=>2,&#39;3&#39;=>3,&#39;4&#39;=>4,&#39;5&#39;=>5,&#39;6&#39;=>6,&#39;7&#39;=>7,&#39;8&#39;=>8,&#39;9&#39;=>9,&#39;A&#39;=>10,&#39;B&#39;=>11,&#39;C&#39;=>12,&#39;D&#39;=>13,&#39;E&#39;=>14,&#39;F&#39;=>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; 
}
Copier après la connexion
array (3) {

[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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal