note 101587 deleted from function.base-convert by danbrown
| From: | danbrown@php.net | Date: | Tue, 28 Dec 2010 16:16:54 +0000 |
| Subject: | note 101587 deleted from function.base-convert by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-175277@lists.php.net to get a copy of this message | ||
Note Submitter: rheel at 1drop dot de
----
If you need this function more flexible, this version also accepts character definitions as
$frombase and $tobase:
<?php
base_convert2('234', 10,
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFHIJKLMNOPQRSTUVWXYZ');
function base_convert2($number,$frombase,$tobase){
$fromchars=$tochars='0123456789abcdefghijklmnopqrstuvwxyz';
if(is_string($frombase)){
$fromchars=$frombase;
$frombase=strlen($fromchars);
}
if(is_string($tobase)){
$tochars=$tobase;
$tobase=strlen($tochars);
}
$dec=0;
for($i=0;$i<strlen($number);$i++){
$char=substr($number,-1-$i,1);
$value=strpos($fromchars,$char);
$dec+=$value*pow($frombase,$i);
}
for($i=0;$i<999;$i++){
if(pow($tobase,$i)>$dec) break;
}
$number='';
for($j=$i-1;$j>=0;$j--){
$pow=pow($tobase,$j);
$n=floor($dec/$pow);
$number.=$tochars[$n];
$dec-=$n*$pow;
}
return $number;
}
?>