
Ihr fragt euch vielleicht was 0xCAFEBABE sein soll. Nun, das ist erstmal eine Zahl im Hexadezimalsystem. In unserem Dezimalsystem wäre das die 3405691582 ;). Das ganze nennt sich magische Zahl (Wiki) und ist immer der erste Teil einer kompilierten Java Klasse (Bytecode). Diese Zahlen wurden eingeführt um Dateien zum Beispiel nach Typ zu unterscheiden. Manchmal werden sie aber auch nur aus Spass eingebaut. Im Fall von Java ist es eher beides ;). Schließlich verbindet man die Kaffeebohne eigentlich sofort mit Java (als Informatiker ;)), daher der passende „String“ (der eigentlich eine Zahl ist) Cafebabe.
So sieht eine Java Klasse zum Beispiel im Hex-Editor aus:
Die Zahl kann aber auch ein ASCII String sein, wie es zum Beispiel bei GIF Dateien der Fall ist, dort steht zu Beginn „GIF89a“ (0x474946383961) oder „GIF87a“ (0x474946383761).
Hier mal eine kleine Zusammenfassung weiterer witziger „Magic Numbers“:
- Programme für den Game Boy und Game Boy Advance haben eine 48 oder 156 Byte lange magische Zahl. Diese Zahl enkodiert ein Bitmap des Nintendo-Logos.
- Alte MS-DOS-exe-Dateien und neuere Microsoft-Windows-PE-exe-Dateien (Portable Executable) starten mit dem ASCII-Code „MZ“ (0x4D5A) bzw. selten auch „ZM“ (0x5A4D), die Initialen des Erfinders dieses Formats, Mark Zbikowski.
- Alte Fat Binaries (die Code für sowohl den 68K- als auch den PowerPC-Prozessor enthalten) auf Mac OS 9 beginnen mit dem ASCII-Code von „Joy!“ (engl. Freude!) (0x4A6F7921).