• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

php将任意进制的数转换成10进制

PHP 水墨上仙 1628次浏览

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

<?php 
# Show the steps involved in converting a number   
# from any base (like octal or hex) to base 10 
# See below for examples, instructions and copyright 
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 />"; 
} 


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明php将任意进制的数转换成10进制
喜欢 (0)
加载中……