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: ♲.