am Donnerstag, 27. März, 2008 - 23:09 von Herbi
Ich habe eine kleine Funktion geschrieben, mit der man jede positive Dezimalzahl in ein anderes Zahlensystem umwandeln kann, sogar in ein komplett eigenes Zahlensystem mit eigenen Zeichen umwandeln kann. Im Anhang findet man den Code als PHP Datei.
Anwendungsbeispiel:
$dual = array( "0", "1" );
$hex = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f" );
echo transfer_into( 11, $dual );
echo transfer_into( 11, $hex );
Viel Spaß damit!
/**
* Transfer any decimal number into any other numbering system.
*
* @author Sebastian Herbermann
* @throws Exception if wrong type is given to function
* @param integer $decimal positive decimal number to transfer
* @param array of string $universe complete universe (ascending) to transfer into
* @return string given decimal transfered into given universe
*/
function transfer_into( $decimal, $universe )
{
if ( !is_integer( $decimal ) || $decimal < 0 ||
!is_array( $universe ) || 0 === count( $universe ) )
{
throw new Exception( "wrong type given for argument" );
}
$count = count( $universe );
$result = "";
if ( $decimal == 0 )
{
$result .= $universe[0];
} else {
while ( $decimal > 0 )
{
$balance = $decimal % $count;
$result .= $universe[$balance];
$decimal = (int) floor( $decimal / $count );
}
}
return strrev( $result );
}
/* Example:
$dual = array( "0", "1" );
$hex = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f" );
echo transfer_into( 11, $dual );
echo transfer_into( 11, $hex );
*/