php实现将任意进制数转换成10进制的方法
本文实例讲述了php实现将任意进制数转换成10进制的方法。分享给大家供大家参考。具体如下:
php将任意进制的数转换成10进制,例如8进制转换成10进制,16进制转换成10进制
<?php
#Showthestepsinvolvedinconvertinganumber
#fromanybase(likeoctalorhex)tobase10
#Seebelowforexamples,instructionsandcopyright
functionshow_convert_to_base_10($number,$base)
{
//Ifthenumbercontainsadecimalcomponent
if(strstr($number,'.'))
{
//Gettheintegeranddecimalcomponents
list($integer,$decimal)=explode('.',$number);
}
else
{
//Thenumberisaninteger
$integer=$number;
}
print"<b>Convertthebase$basenumber$numbertoa
base10number:</b><blockquote>";
print"Converttheintegercomponent($integer)ofthe
number:<blockquote>";
//Computethevalueoftheintegercomponent
//Loopthroughtheintegerdigitbydigit
//Reversethenumberforeasierhandling
$integer=strrev($integer);
$length=strlen($integer);
for($pos=0;$pos<$length;++$pos)
{
/*
PHPletsyoutreatstringsandnumberslikearrays
Specifyanoffsetandgetthecharacteratthat
position
*/
$digit=$integer[$pos];
//Handlecharactervaluesfordigits
//(forbasesgreaterthan10)
if(eregi('[a-z]',$digit))
{
$digit_value=
(ord(strtolower($digit))
-ord('a'))+10;
$digit="$digit($digit_value)";
}
else
{
$digit_value=$digit;
}
//Multiplythecurrentdigitbytheradix
//raisedtothepowerofthecurrentposition
$result=$digit_value*pow($base,$pos);
print"Multiplythevalueofthedigitatposition
$posbythevalueoftheradix($base)raised
tothepoweroftheposition($pos):<br/>";
print"$digit*$base<sup>$pos</sup>=$result
<br/><br/>";
$sums[]=$result;
}
print'</blockquote>';
if(isset($decimal))
{
print"Convertthedecimalcomponent(0.$decimal)
ofthenumber:<blockquote>";
//Padthenumberwithaleading0sothatwecan
//startatposition1
$decimal='0'.$decimal;
$length=strlen($decimal);
for($pos=1;$pos<$length;++$pos){
$digit=$decimal[$pos];
//Handlecharactervaluesfordigits
//(forbasesgreaterthan10)
if(eregi('[a-z]',$digit))
{
$digit_value=
(ord(strtolower($digit))
-ord('a'))+10;
$digit="$digit($digit_value)";
}
else
{
$digit_value=$digit;
}
//Multiplythecurrentdigitbytheradix
//raisedtothepowerofthecurrentposition
$result=$digit_value*pow(1/$base,$pos);
print"Multiplythevalueofthedigitat
position$posbythevalueofthe1/radix
($base)raisedtothepoweroftheposition
($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>Thevalueofthebase$basenumber
$numberinbase10is$base_10_value.<br/>";
print"Thisnumberisderivedfromthesumofthevalues
ofthepreviousoperations($sums).<br/><br/>";
}
希望本文所述对大家的php程序设计有所帮助。