Heim  >  Artikel  >  Backend-Entwicklung  >  So erreichen Sie eine Hexadezimalkonvertierung in PHP

So erreichen Sie eine Hexadezimalkonvertierung in PHP

墨辰丷
墨辰丷Original
2018-06-04 10:10:571676Durchsuche

Ein aktuelles Projekt erforderte eine Basiskonvertierung, mit der ich sehr vertraut war, als ich zum ersten Mal mit der Computertheorie in Berührung kam. Nachdem ich es jedoch längere Zeit nicht verwendet hatte, wurde es tatsächlich unscharf...

Konvertierung von Dezimalzahlen in andere Basen. Dabei wird die Zahl kontinuierlich durch die umzurechnende Basiszahl dividiert und der Rest abgelesen. Verbinden Sie sie einfach miteinander.

<?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,&#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;
}

Test:

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"
}

Binär-, Oktal-, Hexadezimalsystem zu Dezimalkonvertierung

Diese Konvertierung verwendet Multiplikation, wie zum Beispiel: 1101 zur Dezimalkonvertierung: 1*2^3+1*2^2+0*2^1+1*2^0

Code:

<?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;
}

Test:

var_dump(bin_todec(array(&#39;ff&#39;,&#39;ff33&#39;,&#39;cc33&#39;),16));
var_dump(bin_todec(array(&#39;1101101&#39;,&#39;111101101&#39;),2));
var_dump(bin_todec(array(&#39;1234123&#39;,&#39;12341&#39;),8));

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

array(3) {
 [0]=>
 int(255)
 [1]=>
 int(65331)
 [2]=>
 int(52275)
}
array(2) {
 [0]=>
 int(124)
 [1]=>
 int(508)
}
array(2) {
 [0]=>
 int(342099)
 [1]=>
 int(5345)
}

Das sind Nur Implementierungen. Tatsächlich spielt es keine Rolle, ob es sich um die PHP-Sprache oder etwas anderes handelt, die Implementierungsideen sind dieselben. PHP verfügt tatsächlich über viele integrierte Funktionen, um diese Inhalte zu vervollständigen:

bindec(), decoct(), dechex() base_convert() decbin() Dies ist nur eine Implementierungsidee. hehe!

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

php Ausführliche Erläuterung der Definition und Anwendungsbeispiele der Funktion parse_str()

Zwei Methoden für PHP, um die Länge einer Zeichenfolge zu bestimmen

phpMit ffmpeg einem Video Textuntertitel hinzufügen

Das obige ist der detaillierte Inhalt vonSo erreichen Sie eine Hexadezimalkonvertierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn