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程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下