2016-04-20 1 views
1

Мой код выглядит так:Как преобразовать двоичные в десятичные без использования собственных функций PHP?

<?php 

function binary_to_decimal($a) { 
    $bin_array = str_split($a); 

    $y=sizeof($bin_array)-1; 
    for ($x=0; $x<sizeof($bin_array)-1; $x++) { 
     if ($bin_array[$x] == 1) { 
      $bin_array[$x] = bcpow(2, $y); 
     } 
     $y--; 
    } 

    for ($z=0; $z<sizeof($bin_array); $z++) { 
     $result = bcadd($result, $bin_array[$z]); 
    } 
    echo $result; 
} 

binary_to_decimal('11111'); 

?> 

Он по-прежнему с помощью PHP нативные функции. Например: bcpow, sizeof, bcadd.

Может ли он преобразовывать двоичный код в десятичный без использования собственных функций PHP?

Спасибо

+0

http://php.net/manual/en/function.bindec.php в PHP есть функции для это, если я не ошибаюсь 'bindec' – Naumov

+0

Он не хочет использовать собственные функции. – Tom

ответ

1

Вот в http://php.net/manual/en/function.bindec.php#44910

function reconvert($bin_nr) { 
$base=1; 
$dec_nr=0; 
$bin_nr=explode(",", preg_replace("/(.*),/", "$1", str_replace("1", "1,", str_replace("0", "0,", $bin_nr)))); 
for($i=1; $i<count($bin_nr); $i++) $base=$base*2; 
foreach($bin_nr as $key=>$bin_nr_bit) { 
    if($bin_nr_bit==1) { 
     $dec_nr+=$base; 
     $base=$base/2; 
    } 
    if($bin_nr_bit==0) $base=$base/2; 
} 
return(array("string"=>chr($dec_nr), "int"=>$dec_nr)); 
} 

Проверьте здесь: https://eval.in/556903

+0

Мне нужна помощь. Смотрите здесь: http://stackoverflow.com/questions/38521602/how-to-make-triangle-roll-up-with-php –