php 任意进制的数转换成10进制功能实例

前端之家收集整理的这篇文章主要介绍了php 任意进制的数转换成10进制功能实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP将任意进制的数转换成10进制,例如8进制转换成10进制,16进制转换成10进制,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。
经测试代码如下:

/**
 * 任意进制的数转换成十进制
 * @param 
 * @arrange (512.笔记) jb51.cc
 * 显示转换数字所涉及的步骤
 * 从任何基数(如八进制或十六进制)到基数10
 * 请参阅下面的示例
 **/
function show_convert_to_base_10 ($number,$base) 
{ 
    // If the number contains a decimal component 
    if (strstr ($number,'.')) 
    { 
        // Get the integer and decimal components 
        list ($integer,$decimal) = explode ('.',$number); 
    } 
    else 
    { 
        // The number is an integer 
        $integer = $number; 
    } 
      
    print "<b>Convert the base $base number $number to a 
        base 10 number:</b><blockquote>";
    print "Convert the integer component ($integer) of the 
         number:<blockquote>";
    // Compute the value of the integer component 
    // Loop through the integer digit by digit 
    // Reverse the number for easier handling 
    $integer = strrev ($integer); 
    $length  = strlen ($integer);
    for ($pos = 0; $pos < $length; ++$pos) 
    { 
        /* 
         PHP lets you treat strings and numbers like arrays 
         Specify an offset and get the character at that 
         position 
        */ 
          
        $digit = $integer[$pos]; 
          
        // Handle character values for digits 
        // (for bases greater than 10) 
        if (eregi ('[a-z]',$digit)) 
        { 
            $digit_value = 
                  (ord (strtolower ($digit)) 
                  - ord ('a')) + 10; 
                    
            $digit = "$digit ($digit_value)"; 
        } 
        else 
        { 
            $digit_value = $digit; 
        }
        // Multiply the current digit by the radix 
        // raised to the power of the current position 
        $result = $digit_value * pow ($base,$pos); 
          
        print "Multiply the value of the digit at position 
             $pos by the value of the radix ($base) raised 
             to the power of the position ($pos):<br />"; 
               
        print "$digit * $base<sup>$pos</sup> = $result 
             <br /><br />";
        $sums[] = $result; 
    } 
    print '</blockquote>';
    if (isset ($decimal)) 
    { 
         print "Convert the decimal component (0.$decimal) 
         of the number:<blockquote>"; 
          
        // Pad the number with a leading 0 so that we can 
        // start at position 1 
        $decimal = '0'.$decimal; 
        $length  = strlen ($decimal);
        for ($pos = 1; $pos < $length; ++$pos) { 
            $digit = $decimal[$pos]; 
              
            // Handle character values for digits 
            // (for bases greater than 10) 
            if (eregi ('[a-z]',$digit)) 
            { 
                 $digit_value = 
                    (ord (strtolower ($digit)) 
                    - ord ('a')) + 10;
                 $digit = "$digit ($digit_value)"; 
            } 
            else 
            { 
                 $digit_value = $digit; 
            } 
              
            // Multiply the current digit by the radix 
            // raised to the power of the current position 
            $result = $digit_value * pow (1/$base,$pos);
            print "Multiply the value of the digit at 
                position $pos by the value of the 1/radix 
                ($base) raised to the power of the position 
                ($pos):<br />"; 
                  
            print "$digit * 1/$base<sup>$pos</sup> = 
                $result<br /><br />";
            $sums[] = $result; 
        } 
        print '</blockquote>'; 
    }
    $sums = implode (' + ',$sums); 
    eval ("\$base_10_value = $sums;");
    print "</blockquote>The value of the base $base number 
        $number in base 10 is $base_10_value. <br />";
    print "This number is derived from the sum of the values 
        of the prevIoUs operations ($sums). <br /> <br />"; 
}


/***   代码来自编程之家 jb51.cc(jb51.cc)   ***/

猜你在找的PHP相关文章