当前位置:首页 > PHP教程 > php应用 > 列表

php实现将任意进制数转换成10进制的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 20:55:04 浏览: 评论:0 

这篇文章主要介绍了php实现将任意进制数转换成10进制的方法,涉及php数制转换的相关技巧,非常具有实用价值,需要的朋友可以参考下,本文实例讲述了php实现将任意进制数转换成10进制的方法,分享给大家供大家参考,具体如下:

php将任意进制的数转换成10进制,例如8进制转换成10进制,16进制转换成10进制

  1. <?php 
  2. # Show the steps involved in converting a number  
  3. # from any base (like octal or hex) to base 10 
  4. # See below for examples, instructions and copyright 
  5. function show_convert_to_base_10 ($number$base
  6.  // If the number contains a decimal component 
  7.  if (strstr ($number'.')) 
  8.  { 
  9.   // Get the integer and decimal components 
  10.   list ($integer$decimal) = explode ('.'$number); 
  11.  } 
  12.  else 
  13.  { 
  14.   // The number is an integer 
  15.   $integer = $number
  16.  } 
  17.   print "<b>Convert the base $base number $number to a 
  18.   base 10 number:</b><blockquote>"; 
  19.   print "Convert the integer component ($integer) of the 
  20.    number:<blockquote>"; 
  21.  // Compute the value of the integer component 
  22.  // Loop through the integer digit by digit 
  23.  // Reverse the number for easier handling 
  24.  $integer = strrev ($integer); 
  25.  $length = strlen ($integer); 
  26.  for ($pos = 0; $pos < $length; ++$pos
  27.  { 
  28.   /* 
  29.    PHP lets you treat strings and numbers like arrays 
  30.    Specify an offset and get the character at that 
  31.    position 
  32.   */ 
  33.    $digit = $integer[$pos]; 
  34.   // Handle character values for digits 
  35.   // (for bases greater than 10) 
  36.   if (eregi ('[a-z]'$digit)) 
  37.   { 
  38.    $digit_value = 
  39.      (ord (strtolower ($digit)) 
  40.      - ord ('a')) + 10; 
  41.     $digit = "$digit ($digit_value)"
  42.   } 
  43.   else 
  44.   { 
  45.    $digit_value = $digit
  46.   } 
  47.   // Multiply the current digit by the radix 
  48.   // raised to the power of the current position 
  49.   $result = $digit_value * pow ($base$pos); 
  50.    print "Multiply the value of the digit at position 
  51.     $pos by the value of the radix ($base) raised 
  52.     to the power of the position ($pos):<br/>"; 
  53.    print "$digit * $base<sup>$pos</sup> = $result 
  54.     <br/><br/>"; 
  55.    $sums[] = $result
  56.  } 
  57.  print '</blockquote>'
  58.  if (isset ($decimal)) 
  59.  { 
  60.    print "Convert the decimal component (0.$decimal
  61.    of the number:<blockquote>"; 
  62.   // Pad the number with a leading 0 so that we can 
  63.   // start at position 1 
  64.   $decimal = '0'.$decimal
  65.   $length = strlen ($decimal); 
  66.    for ($pos = 1; $pos < $length; ++$pos) { 
  67.    $digit = $decimal[$pos]; 
  68.    // Handle character values for digits 
  69.    // (for bases greater than 10) 
  70.    if (eregi ('[a-z]'$digit)) 
  71.    { 
  72.      $digit_value = 
  73.      (ord (strtolower ($digit)) 
  74.      - ord ('a')) + 10; 
  75.       $digit = "$digit ($digit_value)"
  76.    } 
  77.    else 
  78.    { 
  79.      $digit_value = $digit
  80.    } 
  81.    // Multiply the current digit by the radix 
  82.    // raised to the power of the current position 
  83.    $result = $digit_value * pow (1/$base$pos); 
  84.     print "Multiply the value of the digit at 
  85.     position $pos by the value of the 1/radix 
  86.     ($base) raised to the power of the position 
  87.     ($pos):<br/>"; 
  88.     print "$digit * 1/$base<sup>$pos</sup> = 
  89.     $result<br/><br/>"; 
  90.     $sums[] = $result
  91.   } 
  92.   print '</blockquote>'
  93.  } 
  94.  $sums = implode (' + '$sums); 
  95.  eval ("\$base_10_value = $sums;"); 
  96.   print "</blockquote>The value of the base $base number 
  97.   $number in base 10 is $base_10_value. <br/>"; 
  98.   print "This number is derived from the sum of the values 
  99.   of the previous operations ($sums). <br/> <br/>"; 
  100. }

Tags: php转换成10进制

分享到: