Konversi Bilangan (Ip Address) dengan PHP

![](http://2.bp.blogspot.com/-K4BWMl0w6WQ/TbFjwX_7E3I/AAAAAAAAAX8/sgrCvDnZ09g/ s320/0xphp.png)

Kode ini berawal ketika sedang kuliah dan diberi tugas dari dosen untuk melakukan konversi bilangan ip address dari desimal ke binary atau sebaliknya, karena malas nulis akhirnya ane coba untuk membuat kode untuk melakukan konversi bilangan tersebut.
Dari kedua kode ini, hanya untuk konversi bilangan dari binary ke desimal atau sebaliknya dengan format bilangan seperti ip address, meski tak tertutup untuk format bilangan lain tapi ane sendiri belum nyoba untuk melakukannya.
Format bilangannya adalah seperti ini :
**$a = “192.168.255.254” **untuk konversi bilangan dari desimal ke biner.
$b = “11001010” untuk konversi bilangan dari biner ke desimal.
berikut Fungsi untuk konversi desimal ke biner

function dectobin($dec){  
  $hasil = $h = '';  
  $arr = explode('.', $dec);  
  foreach($arr as $nilai){  
    while((int)$nilai >= 1){  
      $modulus = $nilai % 2;  
      $nilai = floor($nilai / 2);  
      $h = $modulus . $h;  
    }  
    $hasil .= $h . ".";  
    $h = '';  
  }  
  return $hasil;  
}  
?>  

Fungsi untuk konversi biner ke desimal

<php  
 function bintodec($bin){  
  $hasil = $h ='';  
  $arr = explode('.', $bin);  
  foreach($arr as $nilai){  
    for($i = strlen($nilai)-1, $j=0; $i>=0; $i--, $j++){  
      if( (int)$nilai[$j] == 1)  
       $h += pow(2, $i);  
    }  
    $hasil .= $h . ".";  
    $h = 0;  
  }  
  return $hasil;  
}  
?>  

Dan untuk melakukan pemanggilan fungsi bisa dengan cara berikut

$a = "192.168.255.254";  
$b = "11001010.10011111.00010111.00000000";  
echo "Nilai biner dari  $a => " .  dectobin($a) . "\n";  
echo "Nilai desimal dari $b => " . bintodec($b) . "\n";  
?>  

Berikut kode lengkapnya

$a = "192.168.255.254";  
$b = "11001010.10011111.00010111.00000000";  
$c = "11001010.10011111.00010111.11111111";  
$d = "00110101.01100000.11101000.00101001";  
$e = "11111111.11111111.11111111.00101101";  
   
function dectobin($dec){  
  $hasil = $h = '';  
  $arr = explode('.', $dec);  
  foreach($arr as $nilai){  
    while((int)$nilai >= 1){  
      $modulus = $nilai % 2;  
      $nilai = floor($nilai / 2);  
      $h = $modulus . $h;  
    }  
    $hasil .= $h . ".";  
    $h = '';  
  }  
   
  return $hasil;  
}  
   
function bintodec($bin){  
  $hasil = $h ='';  
  $arr = explode('.', $bin);  
  foreach($arr as $nilai){  
    for($i = strlen($nilai)-1, $j=0; $i>=0; $i--, $j++){  
      if( (int)$nilai[$j] == 1)  
       $h += pow(2, $i);  
    }  
    $hasil .= $h . ".";  
    $h = 0;  
  }  
  return $hasil;  
}  
  
echo "Nilai binary dari $a => ", to_bin($a) , "\n";  
echo "Nilai desimal dari $b => ", to_dec($b) , "\n";  
echo "Nilai desimal dari $c => ", to_dec($c) , "\n";  
echo "Nilai desimal dari $d => ", to_dec($d) , "\n";  
echo "Nilai desimal dari $e => ", to_dec($e) , "\n";  
  
?>  

Meski sebenarnya Php telah menyediakan fungsi-fungsi untuk melakukan konversi tersebut, tapi fungsi diatas hanya digunakan untuk pemahaman terhadap proses konversi bilangan tersebut.
Untuk melakukan konversi bilangan dari binari bisa digunakan fungsi bindec($target) , dan untuk sebaliknya gunakan decbin($target), bahkan fungsi untuk konversi ke bilangan basis yang lain seperti oktal atau hexadesimal juga tersedia.

echo "Konversi '1001010' ke desimal => " . bindec('1001010') . "\n";  
echo "Konversi '787' ke binary => ". decbin('787') ."\n";  
echo "Konversi '787' ke hexadesimal => " .base_convert("787", 10, 16) . "\n";  
  
?>  

Ref :