# Hexspeak

Hexspeak è una forma di scrittura ideata da alcuni programmatori di computer. La sua particolarità è quella di utilizzare solo le cifre del sistema numerico esadecimale, ovvero le normali cifre da 0 a 9 e le lettere dell'alfabeto dalla A alla F. La cifra "0" viene usata al posto della lettera "O", la cifra "1" al posto della "I", la cifra "2" al posto della "Z" e la cifra "5" al posto della "S". Il numero di parole rappresentabili usando solo queste lettere è piuttosto limitato.
La motivazione è che la rappresentazione esadecimale viene usata comunemente dai programmi che mostrano direttamente il contenuto della memoria. È entrata perciò nell'uso comune tra i programmatori l'abitudine di usare parole in Hexspeak come numeri magici per individuare facilmente certe condizioni durante l'attività di debugging.

## Alcuni numeri magici

(Il prefisso "0x" è usato in diversi linguaggi di programmazione per indicare i numeri esadecimali.)
* 0xABADBABE (a bad babe, "una ragazza cattiva") è usato da Apple come numero magico per il "Boot Zero Block".
* 0xBAADF00D (bad food, "cibo cattivo") è usato da Microsoft nella funzione LocalAlloc(LMEM_FIXED) per indicare memoria heap allocata ma non inizializzata.
* 0xBADDCAFE (bad cafe, "caffè cattivo") è usato da OpenSolaris nella funzione watchmalloc per indicare memoria allocata ma non inizializzata.
* 0xCAFEBABE (cafe babe, "ragazza del caffè") è usato da Mach-O ("Fat binary" nelle architetture 68k and PowerPC) per identificare file oggetto, e dal linguaggio Java per identificare file bytecode di classi.
* 0xDEADBEEF (dead beef, "carne morta") è usato dai sistemi IBM RS/6000, PowerPC 32-bit e Commodore Amiga come numero magico di debug, e da Solaris per indicare memoria di kernel deallocata.
* 0xDEFEC8ED (defecated, "defecato"; si noti l'uso del numero 8, eight in inglese, per il gruppo di lettere at che in questa parola si pronuncia allo stesso modo) è usato da OpenSolaris per i core dump.
* 0xFEEDFACE (feed face) è usata come header nei file binari Mach-O, e come valore invalido di puntatore per watchmalloc in OpenSolaris.

## Combinazioni particolari

Una curiosità particolare di questo linguaggio è data dal numero 12237792, che, convertito in esadecimale, dà come risultato "BABBE0", leggibile solo da italiani e interpretando lo zero finale come una "O". Su questo fatto si basa una burla circolante per e-mail, che invita a digitare quel numero sulla calcolatrice di sistema di Windows, e interpretando il risultato convertito in esadecimale come una "prova" di avere il computer spiato dalla Microsoft.
Un altro numero che in italiano dà una parola di senso compiuto è 1041744, che corrisponde a "FE550", interpretando i due 5 come lettera "S" e lo 0 come lettera "O".
Un altro numero che in italiano dà una parola di senso compiuto è 61898 o 61802, che corrispondono a "F1CA" e "F16A" , interpretando 1 come lettera "I" e 6 come lettera "G".
Un altro numero che in italiano dà una parola di senso compiuto è 830666, che corrisponde a "CACCA".
Un altro numero che in italiano dà una parola di senso compiuto è 827936, che corrisponde a "CA220", interpretando i due 2 come lettera "Z".
Altri esempi: DAD0, DAD1, BABB0, D10.