Andreas Bierhals: Hex/Dezimal konvertieren mal ganz easy!

Beitrag lesen

Moin,

weil wir gerade so schön dabei sind .... noch eine kleine Verallgemeinerung weiter:

==8><==========================================================

var digits = "0123456789ABCDEF";

function convert(src, base_from, base_to) {
  var tmp = 0, factor=1, result = "";
  for(i=src.length-1; i>=0; --i) {
    tmp += digits.indexOf(src.substring(i, i+1))*factor;
    factor *= base_from;
  }
  
  while(tmp>0) {
    result = digits.charAt(tmp % base_to) + result;
    tmp = Math.floor(tmp/base_to);
  }

return result;  
}

window.alert("255 Decimal sieht in Hex so aus: "+convert("255", 10, 16));
window.alert("Die Zahl '442520' ist in echt 'ne Schnapszahl:"+convert("442520", 7, 10));

==8><==========================================================

Damit kann man nun von einem fast beliebigen Zahlensystem ins andere Konvertieren.
Wenn man ein Zahlensystem mit Basis > 16 benötigt, müssen an den String 'digit'
entsprechend viele Zeichen angefügt werden. Mit dem Alphabet kommt man immerhin
erstmal bis zum 36'er System. Das ganze funktioniert aufgrund der internen
Umrechnung natürlich nur mit Zahlwerten, die in eine JavaScript-Integervariable passen,
also typischerweise 32-bit Zahlen. Wär doch mal'n schöner Feierabendspaß (*ggg*), das
ganze für beliebig lange Zeichenketten in Javascript zu programmieren, aber ich vermute,
das gibt's schon längst irgendwo...

Bis dannundwann

Andreas