Permite convertir numero de una base a otra

PHP:
  1. <?
  2. /****************************************
  3.   convertBase($number, $originalBase, $destinationBase);
  4.  
  5.   Author: Chris Heald
  6.   Creation date: 1/16/02
  7.   Purpose:
  8.   Use to convert a number in any base from 2 to
  9.   36 to any other base from 2 to 36.
  10.   ie: convertBase("FF",16,10) returns 255. You can
  11.   also use HEX, BINARY, BASE10, DECIMAL
  12.   and OCT in place of numeric
  13.   values for the bases. ie:
  14.   convertBase("FF",HEX,BINARY) returns 11111111.
  15.  
  16.   HEX    : 16
  17.   BASE10 : 10
  18.   DECIMAL: 10
  19.   OCT    :  8
  20.   BINARY :  2
  21.  
  22.   Possible future enhancements:
  23.     Even more bases supported. We could use lower case
  24.     and upper case letters as seperate digits, but that could get
  25.     confusing. The benefit of this would be a maximum range of 62 bases.
  26.    
  27.   This was an exericse I did in my free time. Please feel free
  28.   to expand or enhance it, and feel free to email me if you have questions.
  29.  
  30. ****************************************/
  31.  
  32. define("HEX",16);
  33. define("BINARY",2);
  34. define("OCT",8);
  35. define("BASE10",10);
  36. define("DECIMAL", 10);
  37. function convertBase($number, $fromBase = 10, $toBase = 2) {
  38.  
  39.   if($toBase> 36 || $toBase <2)   
  40.   //check base validity
  41.     return "Invalid originating base.";
  42.   if($fromBase> 36 || $fromBase <2)
  43.     return "Invalid destination base.";
  44.    
  45.   @list($number, $decimal) = explode(".",$number);
  46.   for($i = 0; $i <strlen($number); $i++) {   
  47.   //convert to base 10
  48.     $digit = substr($number, $i, 1);
  49.     if(eregi("[a-z]",$digit)) {
  50.       $x = ord($digit) - 65 + 10;
  51.       if($x> $fromBase)
  52.         $x -= 32;
  53.       $digit = $x;
  54.     }
  55.     @$base10 += $digit * (pow($fromBase, strlen($number) - $i - 1));
  56.   }
  57.   $number = $base10;
  58.   if($toBase == 10)
  59.     return $number;
  60.   $q = $number;
  61.   while($q != 0) {   
  62.   //convert base 10 equivalent to specified base
  63.     $r = $q % $toBase;
  64.     $q = floor($q / $toBase);
  65.     if($r> 9)
  66.       $r = chr(($r - 9) + 64);
  67.     @$baseres = "$r" . "$baseres";
  68.   }
  69.   return $baseres;
  70. }
  71.  
  72. ?>

Popularidad: 16%