Programmiere gerade ne Funktion, welche die Zahlen umcodiert, je der Basis nach, wer in den höheren Stufen Informatik hatte, weiß was ich meine.
Hier das Script:
function changebasis ($data, $basisnow, $basislater) {
// (Zahl die umgerechnet werden soll, jetzige Basis, gewünschte Basis)
// Ändert die Codierung einer Zahl
// Array mit Codezeichen
$figures = array_merge(range("0","9", range("a", "z");
// Code ändern
// in Dezimal umrechnen
$codelen = strlen($data); // Ermittelt die länge der Zahl
$issue = 0;
for($i=0; $i<$codelen; $i++) {
// Zeichen in Zahl umwandeln
foreach($figures as $key=>$value) {
if(strtoupper($figures[$key]) == strtoupper(substr($data, (-$i-1), 1))) {
$cipher = $key;
}
}
$issue += $cipher * pow($basisnow, $i); // Rechnet den Wert aus
/* # */echo $cipher." * ".$basisnow." ^ ".$i." = ".$issue."<br />";
}
// in gewünschten Wert umrechnen
$result = $issue;
$issue = "";
while($result > 0) {
/* # */echo "(".$result." / ".$basislater." - ((".$result." % ".$basislater." / ".$basislater." R. ".($result % $basislater)." ".$figures[($result % $basislater)]."<br />";
$issue .= strtoupper($figures[($result % $basislater)]);
$result = ($result / $basislater) - (($result % $basislater) / $basislater);
/* # */echo $result."<br />";
}
return strrev($issue);
}
/* # */ sind Ausgaben um das Script zu testen
So funktioniert es auch ganz gut, wenn jedoch die ersten beiden Ziffer von links 19 sind, dann kriegt er das nicht mehr hin. Er kommt bei $result von 1 an und wenn er dann dividiert berechnet er nicht 0 Rest 1 sondern 0,1 R 0.... warum macht er das?
Ausserdem sobald die Zahlen über 11 Ziffern lang werden funzt garnichts mehr, hilfe!