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

PHP将任意进制的数转换成10进制,例如8进制转换成10进制,16进制转换成10进制,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。
经测试代码如下:

/**
 * 任意进制的数转换成十进制
 * @param 
 * @arrange (编程之家) 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)   ***/

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...