Umrechnen Hex, Dezimal, Binär

Javascript Dezimalzahlen, Binärzahlen und hexadezimale Zahlen umrechnen

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 unseren Computern da eher entgegen: Sie sind knackig kurz im Vergleich zu Binärzahlen.

23-02-02 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

Hexadezimale Zahlen

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

let myHex = myNum.toString(16);

und von Hex zu Dezimal wird von parseInt erledigt.

let myNum = parseInt(myHex, 16);

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

function isValidHex (hex) {
    let 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.

Umrechnen großer Zahlen

Nach 16 Stellen macht Javascript Schluß mit ganzen Zahlen: 9007199254740991 (Number.MAX_SAFE_INTEGER) – mehr geht nicht. Wenn es tatsächlich um die ganz großen Integer geht, kommt BigInt weiter.

console.log (Number.MAX_SAFE_INTEGER);                    

console.log ((987654321098765432).toString(16));          
console.log (BigInt("987654321098765432").toString('16')) 

Dezimal in Binär, Binär zu Dezimal

Funktioniert genauso wie Dezimal zu Hex und Hex zu Dezimal.

let myBin = myDez.toString(2);

und

let myDez = parseInt(myBin, 2);

»Alles ist 1. Außer 0.«

Wau Holland

Unicode: String.fromCodePoint

Aus der Sicht von Unicode sind Zeichen nur abstrakte Begriffe. Jedes abstrakte Zeichen hat einen Namen, z.B. LATIN SMALL LETTER A. Erst beim Rendern entsteht das Zeichen a. In welcher Schrift (Font) das Zeichen dargestellt wird, steht wieder auf einem anderen Blatt (Aus Sicht von Javascript im CSS).

Code points sind Zahlen zwischen U+0000 und U+10FFFF. String.fromCodePoint() gibt für eine Hex- oder Unicode-Sequenz einen String zurück.

elem.innerHTML = String.fromCodePoint(68, 0x9F99, 9842, 0x1F31C);

Code Point 9842 könnten wir mit dem Präfix &# direkt schreiben: ♲. Da Browser UTF-8 beherrschen, kann das Zeichen auch direkt eingesetzt werden: ♲.