[JAVASCRIPT] Problem bei Konvertieren in andere Basis

Hi,
momentan verzeifel ich an einer, eigentlich trivalen, Aufgabe.
Ich möchte eine DezimalZahl in eine Zahl mit einer beliebigen Basis umrechen.
Jede Stelle der neuen Zahl soll ein Feld in einem Array belegen.
Hat vielleicht jemand nen Tip wo mein Fehler liegt ?

Mein <EDIT>funktionierender</EDIT> Beispielcode:
Code:
<html>
<head>
</head>
<body onload="init();">
    <div id="output"></div> 
    <script type="text/javascript">    
                function init(){
                        var tmp;
                        lastStart = 0;
                        while(lastStart < 1000){
                                tmp = calcNr(lastStart, 16);
                                lastStart++;
                        }
                }
               
                function log(base, val){
                        if(val==0)return 0;
                        return Math.log(val)/Math.log(base);
                }
               
                function calcNr(nr, base){
                        var i = 0;
                        var size = Math.floor(log(base, nr)) + 1;
                        var arr = new Array(size);
                        for(i=0;i<arr.length;arr[i]=0,++i);
                        var left = nr;
                        for(i=0; i<arr.length && left > 0; i++){
                                var ba = Math.pow(base, arr.length-i-1);
                                var ba2 = Math.floor(left/ba);
                                arr[i] = ba2;
                                left = left % ba;
                        }
                        document.getElementById('output').innerHTML += "nr: " + nr + " / length: " + size + " / arr: " + arr + "<br/>";
                        return arr;
                }
    </script>
</body>
</html>

BTW: Ja ich weiß das ich hier eigentlich im falschen Forum bin, allerdings ist mein Problem imo von der Sprache losgelöst.

Vielen Dank im Vorraus
 
Auf den ersten Blick stimmt doch die Ausgabe :confused:
Code:
function arrToString(arr, base)
{
     var result = "";
     for (var i in arr) 
         result += arr[i].toString(base);
     return result;
}
...
 document.getElementById('output').innerHTML += ("nr: " + nr 
           + " / length: " + size + " / arr: " + arr + " / classic: " 
           + arrToString(arr, base) + "<br/>");
return arr;
 
Upps, peinlich.. Yep, der code funktioniert.
Dennoch danke CDW fürs testen.

Ich dachte ich könnte das ganze nutzen um einen Offset für permutation zu berechnen.
Bsp (pseudoCode):
Code:
chars = "abcdefghijklmnopqrstuvwxyz";
size = 1000;
for(i=0;i<x;i+=size){
  stepAndCheckPermutations(calcNr(i, chars.length), size);
}
...
stepAndCheckPermutations(arr, size){
  for(i=0;i<size;++i){
    out="";
    for(i=0;i<arr.lenght;out+=chars[i],++i);
    checkString(out);
    incrementByOne(arr);
  }
}

Das ganze ist natürlich ein Trugschluss gewesen, da (mit der basis 10) nach 99 100 und nicht 000 kommt.
Falls wer nen tip hat wie ich den "offset" sonst berechnen kann immer her damit.
Ansonsten denke ich noch ein wenig nach.
 
Zurück
Oben