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程序设计有所帮助。