¿Cómo codificó esta persona “Hello World” con Microsoft Paint?

4 minutos de lectura

avatar de usuario
Eamonn O’Brien

Acabo de ver esto en los últimos días y no puedo entender cómo funciona. El video del que hablo es aquí:

QlGpd

Es la respuesta mejor calificada de esta pregunta de desbordamiento de pila: ¿Por qué este programa fue rechazado por tres compiladores?

¿Cómo puede este mapa de bits mostrar un programa C++ para “Hello World”?

  • los valores de mapa de bits son solo bits en un archivo. Si interpreta esos bits como ASCii, mostrará algo. Cuidadosa selección de bits y se puede escribir una carta, o la constitución, en un mapa de bits (módulo de la cabecera del archivo). ¿Qué no es entender? Es una tontería, como el peor editor del mundo.

    – Thomas M. Du Buisson

    7 abr 2011 a las 23:11

  • Por lo que vale, hay es al menos un lenguaje de programación donde el código fuente se expresa como una imagen. No es que esta imagen en particular funcione con él, pero…

    –Michael Madsen

    7 abr 2011 a las 23:44


  • El hilo que estabas buscando stackoverflow.com/questions/5508110/…

    – doctor

    9 de abril de 2011 a las 2:33

  • Ese GIF animado está matando mi navegador (IE y Chrome): hay mejores formas de publicar videos que un GIF animado.

    – MusiGénesis

    10 de abril de 2011 a las 12:47

  • @MusiGenesis Oh, cómo recuerdo los problemas de 2011.

    –Charles Clayton

    20 de noviembre de 2015 a las 18:27

avatar de usuario
Mateo Italia

Una imagen BMP (DIB) está compuesta por un encabezado seguido de una imagen sin comprimir.1 datos de color (para imágenes de 24 bpp son 3 bytes por píxel, almacenados en orden de fila inverso y con paso de fila de 4 bytes).

Los bytes para datos de color se utilizan para representar colores (es decir, ninguno de ellos está “obligado” por el formato de archivo2, todos provienen del color de cada píxel), y existe una perfecta correspondencia 1:1 entre los colores de los píxeles y los bytes escritos en el archivo; por lo tanto, utilizando colores perfectamente elegidos, puede escribir lo que quiera en el archivo (con la excepción del encabezado).

Cuando abra el archivo generado en el bloc de notas, los datos de color se mostrarán como texto; todavía se puede ver claramente desde el encabezado (la parte de BM al comienzo del texto), que es obligatorio por el formato de archivo.

En mi opinión, este video se hizo de esta manera: primero, el autor calculó el tamaño necesario para el mapa de bits y creó un archivo DIB del tamaño correcto relleno con un color que se expande a un patrón simple (por ejemplo, todos los bytes 65 => 'A'); luego reemplazó dicho patrón con el código de “carga útil”, como se muestra en el video.

Tenga en cuenta, sin embargo, que no es imposible hacer todo a mano con el bloc de notas: con el cuadro de diálogo de selección de color, una tabla ASCII y un conocimiento básico del formato DIB se puede hacer, pero sería mucho más lento y propenso a errores.

Más información sobre el formato DIB


  1. Hay DIB comprimidos RLE, pero en este caso se usan mapas de bits sin comprimir (y se usan muy raramente de todos modos).
  2. Con la excepción de la zancada, eso se evitó usando filas múltiplo de 4 bytes.

Supongo que te refieres a la respuesta a una de las preguntas de April Fools.

Supongo que cada píxel tiene una representación binaria para él. Y que cada carácter en el código fuente tiene una representación binaria para él.

La persona que creó el programa debió calcular el color de cada píxel que tendría una representación binaria que correspondería a cada carácter.

  • +1: al final, los bytes son bytes. El Bloc de notas los interpreta como caracteres de texto, mientras que mspaint los interpreta como píxeles en un mapa de bits. El texto “basura” inicial es información adicional de la imagen (posiblemente cosas como resolución, versión, etc.).

    – Chris Schmich

    7 abr 2011 a las 23:12


Desde un punto de vista teórico de la ciencia de la computación, sería interesante preguntar si cada programa puede escribirse de tal manera que, visto como un mapa de bits, realmente vea el código fuente que hace lo mismo. Si está seriamente interesado en tales resultados, lea, por ejemplo, sobre el Teorema del punto fijo de Kleene.

El programa como imagen también se puede ver como una forma de ofuscación de código. No es que fuera particularmente práctico…

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad