Umrechnen Hex, Dezimal, Binär

Javascript Dezimalzahlen, Binärzahlen und hexadezimale Zahlen in anderes Zahlensystem umwandeln

Wir rechnen im Dezimalsystem mit den Ziffern 0, 1 … 9 und mit 10 Fingern im Zehnersystem. Für uns ist das die intuitivste Methode.

Computer basieren auf dem Binärsystem, das mit den zwei Ziffern 0 und 1 auskommt. Hexadezimalzahlen kommen uns da eher entgegen: Sie sind knackig kurz im Vergleich zu Binärzahlen.

Das Hexadezimalsystem ist ein Zahlensystem zur Basis 16, das die Ziffern von 0 bis 9 und die Buchstaben a (10), b (11), c (12), d (13), e (14) und f (15) verwendet.

Der Charme von Hex liegt in der Kürze und es wird aus ähnlichen Gründen eingesetzt wie Base64 (ein System zur Basis 64) – zur Übertragung von Binärdaten in Anwendungen, die nur Text übertragen und nicht sauber mit 8-Bit-Zeichen umgehen können.

Daten lassen sich als Hex kompakt schreiben und versenden. Die Codierung ist einfach und im Gegensatz zu Base64 können wir hexadezimale Zahlen mit etwas Übung ohne Hilfsmittel entziffern.

Hex nach Dezimal

Javascript rechnet alles über das Dezimalsystem um. Eine Hex-Zahl wird erst in eine Dezimalzahl umgerechnet, von Dezimal kommen wir dann auf die Binärzahl.

Hexadezimal ist uns am ehesten durch die hexadezimale Farbnotation vertraut. Seitdem wir auf dem Computer mit Farben umgehen, werden Farben hexadezimal notiert: #ffffff für Weiß, #000000 für Schwarz.

Die Umrechnung von Dezimal zu Hexadezimal erfolgt mit

var myHex = myNum.toString(16);

und von Hex zu Dezimal wird von parseInt erledigt.

var myNum = parseInt(myHex, 16);

Am Rande: Prüfen, ob der eingegebene String eine hexadezimale Zahl ist

function isValidHex (hex) {
    var pattern = new RegExp('[^0-9a-fA-F]');
    return pattern.test(hex);
}

isValidHex benutzt ein RegExp-Objekt, weil der reguläre Ausdruck aus einem Eingabefeld stammt. Getest wird, ob die Eingabe etwas anders als 0-9, a-f oder A-F enthält.

Dezimal in Binär, Binär zu Dezimal

Funktioniert genauso wie Dezimal zu Hex und Hex zu Dezimal.

var myBin = myDez.toString(2);

und

var myDez = parseInt(myBin, 2);