2009-07-20 4 views
28

Ricordo di aver visto in passato un programma che prendeva qualsiasi file e generava un array C che rappresenta quel file come output; sarebbe prevenire la distribuzione di un file separato in alcuni casi. Quale programma Unix/Linux che fa?Programma che crea una matrice C determinato un qualsiasi file?

+1

Quella stella un pochi pixel laggiù è stato fatto per questa domanda – xyz

risposta

63
+3

Grazie a Internet! – 0x6adb015

+9

Boy mi sento stupido per aver scritto il mio ... –

+0

Modificato per adattarsi a meno di 15 caratteri: p – sigjuice

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

genererebbe un C come matrice da stdin, ma non c'è dichiarazione, nessuna parentesi o buona formattazione.

3

So che questa è una domanda Unix/Linux, ma chiunque visualizzi ciò che vuole fare lo stesso in Windows può usare Bin2H.

+0

xxd è disponibile per Windows anche. – DrAl

10

Per file di grandi dimensioni, la conversione in testo e la successiva analisi del compilatore è inefficiente e non necessaria. Utilizzare objcopy invece:

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

(. Regolare l'architettura di uscita, se necessario, per le piattaforme non-x86) Poi, una volta si collega nel vostro programma, è possibile accedere in questo modo:

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

... 

foo(_binary_stuff_start[i]);