2009-07-20 8 views
28

Recuerdo haber visto en el pasado un programa que tomaría cualquier archivo y generaría una matriz en C que representara ese archivo como salida; en algunos casos, impediría la distribución de un archivo separado. ¿Qué programa Unix/Linux hace eso?¿Qué programa crea una matriz C dado un archivo?

+1

Esa estrella una Pocos píxeles se hicieron para esta pregunta – xyz

Respuesta

63
+3

Gracias Internet! – 0x6adb015

+9

Chico, me siento estúpido por haber escrito el mío ... –

+0

Editado para caber en menos de 15 caracteres: p – sigjuice

4
hexdump -v -e '16/1 "0x%x," "\n"' 

generaría una C como matriz a partir de la entrada estándar, pero no hay ninguna declaración, no hay llaves o bien formato.

3

Sé que esta es la pregunta de Unix/Linux, pero cualquiera que vea esto y desee hacer lo mismo en Windows puede usar Bin2H.

+0

xxd también está disponible para Windows. – DrAl

10

Para archivos grandes, la conversión a texto y luego hacer que el compilador lo analice de nuevo es ineficiente e innecesario. Utilice objcopy lugar:

objcopy -I binary -O elf32-i386 stuff stuff.o 

(. Ajustar la arquitectura de salida según sea necesario para las plataformas que no son x86) A continuación, una vez que se vincula en su programa, se puede acceder a él de este modo:

extern char _binary_stuff_start[], _binary_stuff_end[]; 
#define SIZE_OF_STUFF (_binary_stuff_end - _binary_stuff_start) 

... 

foo(_binary_stuff_start[i]); 
Cuestiones relacionadas