dezimalzahl in oktal



  • hallo,

    ich will ein kleine programm schreiben was die eingegebene dezimalzahl als oktalzahl ausgibt.
    rein rechnerisch wäre das ja grob gesagt: die dezimalzahl durch 8 teilen. rest aufschreiben. danach den quotienten wieder durch 8 teilen. rest aufschreiben. das solange wiederholen bis als quotient 0 rauskommt.
    den rest jetzt noch von hinte anfangend aufschreiben und schon hat man die oktalzahl. aber wie geht das in php?

    while ($decimalO > 0)
    	{
    	 if($decimalO != 0)
               {
    	    $oktal .= ($decimalO%8);
    	    $decimalO = ($decimalO/8);
    	   }
    	}
    

    die while schleife läuft solange bis die dezimalzahl nicht mehr größer als 0 ist. außerdem schreibt er den rest in die variable oktal rein. danach teilt er die dezimalzahl durch 8. irgendwann kommt als ergebnis 0 raus und damit sind sowhl while als auch if bedingung nicht mehr erfüllt und stoppen.

    aber wenn ich das ergebnis mit online konvertern vergleiche bekomme ich kleine unterschiede. z.b. statt einer 7 steht eine 6 usw.

    wo ist der fehler??



  • $oktal = decoct( $decimalO );
    

    ...



  • danke aber mir ist durchaus klar das es diverse funktionen gibt um die zahlen umzurechnen.
    aber meine aufgabe ist es ohne solcher funktionen die zahl umzurechnen, sprich quasi decoct selbst selber zu programmieren.

    EDIT: hab es nun selber gelöst... für diejenigen die es auch ohne die fertigen funktionen machen wollen oder sollen:

    while ($decimalO > 0)
        {
         $oktal .= ($decimalO%8);
         $decimalO = (int)($decimalO/8); 
        }
    

Anmelden zum Antworten