2009-07-20 17 views
28

Pamiętam, że widziałem w przeszłości program, który pobierał dowolny plik i generował tablicę C reprezentującą ten plik jako wynik; w niektórych przypadkach uniemożliwiłoby to dystrybucję oddzielnego pliku. Który z programów Unix/Linux to robi?Który program tworzy tablicę C z dowolnego pliku?

+1

To star kilka pikseli tam wykonano na to pytanie – xyz

Odpowiedz

63
+3

Dziękuję Internet! – 0x6adb015

+9

Chłopcze, czuję się głupio, że napisałem własną ... –

+0

Edytowany, aby zmieścić się w mniej niż 15 znakach: p – sigjuice

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

wygeneruje C jak tablica ze standardowego wejścia, ale nie ma deklaracji, nie ściągi lub dobrze formatowania.

3

Wiem, że to pytanie Unix/Linux, ale każdy, kto ogląda to, co chce zrobić to samo w systemie Windows, może użyć Bin2H.

+0

xxd jest również dostępny dla Windows. – DrAl

10

W przypadku dużych plików konwersja na tekst i ponowne przeanalizowanie kompilatora jest nieefektywne i niepotrzebne. Użyj objcopy zamiast:

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

(. Dostosuj architekturę wyjściowy jako konieczne dla platform innych niż x86) Następnie po połączeniu go do swojego programu, można go tak:

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

... 

foo(_binary_stuff_start[i]); 
Powiązane problemy