Hexspeak

Japanische Makaken entspannen sich beim Bad in einer heißen Quelle
0xBADEAFFE in seinem Element

Hexspeak (von hexadezimal und engl. to speak = sprechen) nennt man Zahlen in hexadezimaler Notation, die auch als Wörter der meist englischen Sprache gelesen werden können, beispielsweise lautet die Dezimalzahl 57005 in hexadezimaler Darstellung DEAD (dead – tot). Deutschsprachige Entwickler verwenden auch deutsche Wortkombinationen wie beispielsweise BADEAFFE.

Hexspeak wurde von Programmierern erfunden, die für die Markierung von Daten oder Speicherbereichen eine magische Zahl als eindeutigen Identifikator benötigten. In der hexadezimalen Zahlendarstellung, in der neben den arabischen Ziffern 0123456789 auch die Buchstaben ABCDEF aus dem lateinischen Alphabet verwendet werden, können bestimmte Zahlen wie lesbare englische Wörter aussehen, wobei auch die Ziffern gelegentlich gemäß Leetspeak Buchstaben repräsentieren (z. B. kann die Ziffer 5 den Buchstaben S darstellen).

Gebräuchliche Hexspeak-Zahlen

Derzeit (2010) haben die häufiger benutzten Hexspeak-Zahlen aufgrund der in heutigen Computersystemen verbreiteten 32-Bit-Architektur eine Länge von 32 bit (entsprechend 8 Hexadezimalziffern). Mit dem zunehmenden Aufkommen von 64-Bit-Systemen sind auch Hexspeak-Zahlen mit 64 bit häufiger anzutreffen, sie sind aber nach wie vor eher selten, ebenso wie Hexspeak-Zahlen mit 16 bit.

Bekannte Hexspeak-Zahlen sind beispielsweise:

Hexadezimalzahlenglischdeutsch (etwa)
0xDEADBEEFdead beeftotes Rindfleisch
0xDECAFBADdecaf badkoffeinfrei (ist) schlecht
0xCAFEBABEcafe babeCafé-Herzchen
0xC001CAFEcool cafekalter Kaffee
0xBAADF00Dbad foodschlechtes Essen
0xBAADFEEDbad feedschlechtes Futter
0xC0EDBABEcoed babeschöne Studentin
0x1FEDBEEFone fed beefein gefüttertes Rind / ein verfüttertes Rind
0xBADCAB1Ebad cableschlechtes Kabel
0xBADC0DEDbad codedschlecht programmiert
0xC001D00Dcool doodcooler Typ
0xDEADC0DEdead codetoter Code
0xDEADDA7Adead datatote Daten
0x1BADBABEone bad babeein mieses Luder
0xC0CAC01A 0xADD511FEcoca cola adds lifeCoca-Cola erfrischt
0xC0DEBA5EcodebaseCodebase (Gesamter Quelltext einer Anwendung)
0xABAD1DEAa bad ideaeine schlechte Idee
0xBA55bassBass
0xBADA55bad asskrasser Typ
0xB16B00B5big boobsgroße Brüste[1]
0xBADEAFFEBade-Affe
0xAFFED00FAffe doof
0xBADB007bad bootSchlechter Ladevorgang (Booten)
0xD00FEB0FDoofe BOFSchlechte Bedienoberfläche

Hexspeak-Zahlen als magische Zahlen

Viele Prozessoren, Betriebssysteme und Debugger machen Gebrauch von magischen Zahlen; zur schnellen Identifizierung werden oft Hexspeak-Zahlen gewählt.

Bekannte Beispiele:

  • 0xABADBABE (a bad babe) ist die magische Zahl für den Boot Zero Block bei Apple.
  • 0xBAADF00D (bad food) wird bei Microsofts Funktion LocalAlloc(LMEM_FIXED) benutzt, um nicht-belegten Heap-Speicher zu erkennen.
  • 0xDEADBEEF (dead beef) wird bei IBMs RS/6000-Systemen und bei Computern mit Mac OS auf 32-Bit-PowerPC-Prozessoren als magic debug number genutzt.[2]
  • 0xFEE1DEAD (feel dead) wird im Linux-Systemaufruf reboot() benutzt.[3]
  • 0xCAFEBABE (cafe babe) ist die magische Zahl aller Java-Klassendateien.[4]
  • 0xBADCAB1E (bad cable) wird in Embedded Visual Studio vom On-Device Debugger verwendet, wenn die Verbindung vom Debugger zum Device während des Debugging unterbrochen wurde.
  • 0xFEEDC0DE (feed code) wurde im Betriebssystem OS-9 als Initialisierungswert für noch unbelegten Speicher verwendet.
  • 0xDEADFACE (dead face) stand im Betriebssystem OS-9 als magische Zahl am Anfang der Überschrift eines Moduls.

Andere Notationen

Wie in den Beispielen oben benutzt auch die Programmiersprache C das Präfix 0x für die Kennzeichnung einer Zeichenfolge als Hexadezimalzahl. Dieses Präfix wird normalerweise ignoriert, wenn eine Hexspeak-Zahl als englischer Text interpretiert wird. Ein Gegenbeispiel ist das Netzwerkmanagementsystem CA Spectrum, welches zur Kommunikation zwischen Server- und Clientsystemen den TCP-Port 48879 verwendet, der in C-Notation als 0xbeef, also Ox beef (deutsch: Ochsenfleisch) gelesen wird. Da besonders bei der Programmierung eigener Anwendungen diese Portangabe häufig benötigt wird, wurde hier eine leicht zu merkende Eselsbrücke geschaffen.

Auch in anderen Notationen können solche Kennzeichnungen durchaus Bestandteil des englischen Textes werden. Beispiele:

  • Im x86-Assembler werden hexadezimale Zahlen mit einem Suffix h gekennzeichnet. Hier wäre eine Hexspeak-Zahl beispielsweise 0FEEDADEADF15h (feed a dead fish – füttere einen toten Fisch).
  • In der Programmiersprache Pascal bzw. anderen Assemblern wird hexadezimalen Zahlen ein $ vorangestellt. Damit sind Hexspeak-Zahlen möglich wie $EED (seed – die Saat, so wird der Vorgabewert eines Pseudozufall­szahlengenerators bezeichnet).

Einzelnachweise

  1. Dean Howell: Dear Microsoft, Thanks For The 0xB16B00B5 (Memento des Originals vom 12. April 2015 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.thepowerbase.com. Abgerufen am 21. Juli 2012.
  2. Dave Falkenburg, Brian Topping: Debugging on PowerPC. Abgerufen am 18. April 2008.
  3. Man-Page zu reboot(2). Abgerufen am 18. April 2008.
  4. VM Spec: The class File Format. In: The Java Virtual Machine Specification. Abgerufen am 8. September 2015.