Jörg Reinholz: Dezimalzahlen in Hexadezimal und Binär umrechnen

Beitrag lesen

Hier ist in PHP ein Ansatz für etwas mehr als das, was Du in Javascript suchst (Du musst es nur umschreiben...):

<?php  
  
function getBigNumArray() {  
# Das Zahlensystem besteht aus den Elementen ...  
return array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');  
# test hexadezimal: return array ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');  
# test oktal: return array ('0','1','2','3','4','5','6','7','8');  
# test dual: return array('0','L');  
}  
  
function getBigNumHash() {  
# kehrt den Array um. Es entsteht ein "hash"  
	$ar=getBigNumArray();  
	$i=0;  
	foreach ($ar as $element) {  
		$hash[$element]=$i++;  
	}  
return $hash;  
}  
  
function getNumberFromString($str) {  
# gibt die dezimale Entsprechung der Zahl aus dem beliebigen Zahlensystem zurück  
	$hash=getBigNumHash();  
	$number=0;  
	$length=strlen($str);  
	for ($i=$length; $i>0; $i-- ) {  
		$inv=$length-($i);  
		$char=$str{($i-1)};  
		if ($hash[$char] != 0) {  
			$add=pow(count($hash),$inv)*($hash[$char]);  
		} else {  
			$add=0;  
		}  
		$number=$number+$add;  
	}  
return $number;  
}  
  
  
function getStringFromNumber($int) {  
# gibt die Zahl als eine aus dem beliebigen Zahlensystem zurück  
	$ar=getBigNumArray();  
	$length=count($ar);  
	$str='';  
	$positions=0;  
	while ( pow($length, ($positions)) <= $int) {  
		$positions++;  
	}  
	for ($i=$positions; $i>0; $i--) {  
		$potenz = pow($length, $i-1);  
		$pos = floor($int/$potenz);  
		$int = $int % $potenz;  
		$str = $str . $ar[$pos];  
	}  
return $str;  
}

Jörg Reinholz