>
¡Apúntate al foro de PisitoenMadrid!


Números mágicos: CAFEBABE

Ayer estábamos Kike y yo peleándonos por añadirle un JScrollPane a nuestro JTree y que éste se actualizase correctamente cuando le envíabamos el DefaultMutableTreeNode… vale… me callo…

El caso es que fuimos a preguntarle a un amigo, ex profesor de Java, próximo director de proyecto y lector de PisitoenMadrid quien, además de solucionarlos la duda en un momento y dejarnos una sensación de “somos muuuuy tontos“, me dijo una curiosidad sobre Java y los números mágicos (magic numbers)

En programación, un “magic number” es una constante numérica usada para identificar que tipo de dato se está usando. Por supuesto no sólo se usan en tipos de datos sino también en protocolos y ficheros. ¿Cómo identifica el Sistema Operativo qué tipo de fichero es un cierto archivo? Pues además de las extensiones, información nada relevante en Unix, el Sistema Operativo usa los “magic numbers” para saber el tipo de un archivo.

Los números mágicos están compuestos por dos bytes que contienen un número en Hexadecimal y la mayoría son muy típicos y aburridos:

  • GIF: es ‘GIF89a’ (0×474946383961) o ‘GIF87a’ (0×474946383761)
  • Zip: es ‘PK’, las iniciales de Phil Katz, creador de la utilidad de DOS PKZIP.
  • MIDI: ‘MThd’ (0×4D546864)
  • TIFF: ‘II’ (para Intel o little endian) o “MM” (para Motorola o big endian)

Luego hay otros más curiosos y simpáticos como los ejecutables de la Game Boy y Game Boy Advance cuyo número mágico codifica el bitmap del logo de Nintendo; o los antiguos archivos binarios para procesadores PowerPC en los Mac OS que contenían ‘Joy!’ (0×4A6F7921).

Pero Sun en un alarde de originalidad y supongo que para poder identificar perfectamente sus bytecodes, clases Java “compiladas”, sin tener que realizar la conversión de hexadecimal o aprenderse una ristra de números y letras, puso como código hexadecimal 0xCAFEBABE… ¡CAFEBABE!

La verdad es que nadie sabe en concreto el por qué, o por lo menos no lo he encontrado. Lo más probable es que lo hayan pensado tanto por lo práctico como por la coña. Curioso que el símbolo de java sea una taza de café…

Entradas relacionadas

7 Respuestas a “Números mágicos: CAFEBABE”


  1. 1 n.l
    Utiliza el Mozilla Firefox Mozilla Firefox 2.0.0.4 en Linux Linux 6 , 2007, 2:04 pm

    En un dialecto de inglés, java quiere decir café.

    El ponerle Java al proyecto vino de James gosling, Arthur Van hoff, Andy bechtolsheim (se les ocurrió en una cafetería)

  2. 2 David Alayón
    Utiliza el Mozilla Firefox Mozilla Firefox 2.0.0.4 en Windows Windows XP 6 , 2007, 2:13 pm

    Muy interesante N.L! No lo sabía!!

  3. 3 DdS
    Utiliza el Mozilla Firefox Mozilla Firefox 2.0.0.4 en Windows Windows XP 6 , 2007, 8:51 pm

    Que yo sepa lo de Java viene por la isla de Java (Indonesia) y su famoso café (de ahí la taza). Pruebas:

    http://en.wikipedia.org/wiki/Java_coffee (ver trivia)

    ¿Un dialecto del inglés? Parece que te lo hayas inventado, n.l…

  4. 4 cocomiel
    Utiliza el Internet Explorer Internet Explorer 7.0 en Windows Windows Vista 7 , 2007, 7:55 am

    afecta en algo el endian?.

  5. 5 David Alayón
    Utiliza el Mozilla Firefox Mozilla Firefox 2.0.0.4 en Windows Windows XP 7 , 2007, 8:37 am

    El caso es que si cocomiel. Esta curiosidad sólo se da en los Big endian

    Un saludo!

  1. 1 meneame.net Dirección Trackback a 6 , 2007, 2:46 pm
  2. 2 Semana: 4-10 Junio 2007 at Pisito en Madrid Dirección Pingback a 13 , 2007, 8:56 am

Añade un Comentario








Cerrar
Enviar por Correo