Hexadezimalzahlen
Problem
Ein Werkzeug zeigt C3 BC an, ein Dokument erwähnt U+00FC und in einer Konfiguration steht 0xFF. Was bedeuten diese Werte? Du möchtest Bytewerte lesen und ihren Zusammenhang verstehen, ohne jede Umrechnung von Hand durchzuführen.
Lösung
1. Hexadezimal ist eine Schreibweise für Zahlen
Das Dezimalsystem verwendet zehn Ziffern: 0–9. Das Hexadezimalsystem, oft kurz Hex genannt, verwendet sechzehn: 0–9 und A–F. Die sechs Buchstaben stehen für diese Werte:
A → 10 B → 11 C → 12 D → 13 E → 14 F → 15
Das ist die vereinbarte hexadezimale Schreibweise. Ein G gibt es darin nicht. Groß- und Kleinschreibung bedeuten dasselbe: FC und fc stehen für dieselbe Zahl.
2. Warum die nächste Stelle Sechzehner zählt
Im Dezimalsystem sind nach 9 alle einzelnen Ziffern aufgebraucht. Die nächste Zahl ist deshalb 10: ein Zehner und null Einer.
Im Hexadezimalsystem sind nach F alle einzelnen Ziffern aufgebraucht. Auch hier schreibt man die nächste Zahl als 10. Sie bedeutet jetzt aber einen Sechzehner und null Einer.
Dezimal 14 → Hex E Dezimal 15 → Hex F Dezimal 16 → Hex 10 Dezimal 17 → Hex 11 Dezimal 26 → Hex 1A Dezimal 27 → Hex 1B
Jede Stelle ist sechzehnmal so viel wert wie die Stelle rechts daneben. Von rechts nach links zählen die Stellen Einer, Sechzehner und dann Gruppen von 256.
Bei zwei Hex-Ziffern multiplizierst du den Wert der linken Ziffer mit 16 und addierst den Wert der rechten Ziffer:
1A → 1 × 16 + 10 = 26 C3 → 12 × 16 + 3 = 195 BC → 11 × 16 + 12 = 188 FF → 15 × 16 + 15 = 255
3. Zwei Hex-Ziffern stellen ein Byte dar
Ein Bit ist eine 0 oder eine 1. Ein Byte enthält acht Bits. Damit sind 256 verschiedene Bitmuster möglich. Als vorzeichenlose Zahl interpretiert, hat ein Byte einen Wert von 0 bis 255.
Eine einzelne Hex-Ziffer stellt vier Bits dar. Zwei Hex-Ziffern stellen deshalb ein vollständiges Byte dar:
C → 1100 3 → 0011 C3 → 11000011 → ein Byte
Die Dezimalzahl 195, die Hexadezimalzahl C3 und die Binärzahl 11000011 beschreiben denselben Wert. Du kannst Hex-Ziffern direkt einzeln in Binärziffern umwandeln. Der Umweg über das Dezimalsystem ist optional.
00 ist der kleinste vorzeichenlose Bytewert und FF der größte. Zwei als C3 BC angezeigte Rohbytes enthalten zusammen sechzehn Bits.
4. Warum Hexadezimalzahlen nützlich sind
Vergleiche zwei Darstellungen derselben zwei Bytes:
Binär → 11000011 10111100 Hex → C3 BC
Hex ist kürzer und lässt sich leichter vergleichen oder kopieren. Dabei entspricht jedes Ziffernpaar genau einem Byte. Werkzeuge zeigen Bytes häufig so an, wenn du Dateien, Netzwerknachrichten oder Speicher untersuchst.
Hex begegnet dir auch in IPv6-Adressen, MAC-Adressen, Hashes und Farbwerten. Zum Beispiel verwendet die Farbe #FF0000 den Wert FF für Rot, 00 für Grün und 00 für Blau.
5. Schreibweise und Zusammenhang erkennen
0xFF bedeutet die Hexadezimalzahl FF, also dezimal 255. Das Präfix 0x zeigt, welches Zahlensystem verwendet wird.
U+00FC bezeichnet einen Unicode-Codepunkt, dessen Nummer in Hex geschrieben ist. Er identifiziert das Zeichen ü. Führende Nullen ändern den Zahlenwert nicht: FC und 00FC bedeuten beide 252.
Leerzeichen in einer Byteanzeige wie C3 BC trennen die Bytes, damit du sie leichter lesen kannst. Eine Folge von 32 Hex-Ziffern kann 16 Rohbytes darstellen. Das verwendete Format legt fest, wie die Bytes zu interpretieren sind: als Text, Zahl, Farbe oder etwas anderes.
Kerngedanke: Hexadezimal ist eine gut lesbare Schreibweise für Zahlen und Bytewerte. Zwei Hex-Ziffern stellen ein Byte dar; das verwendete Format bestimmt, was diese Bytes bedeuten.