2009-07-20 7 views
28

Je me souviens avoir vu dans le passé un programme qui prendrait n'importe quel fichier et générerait un tableau C représentant ce fichier en sortie; cela empêcherait la distribution d'un fichier séparé dans certains cas. Quel programme Unix/Linux fait cela?Quel programme crée un tableau C donné à un fichier?

+1

Cette étoile a quelques pixels là-bas ont été faits pour cette question – xyz

Répondre

63
+3

Merci Internet! – 0x6adb015

+9

Garçon est-ce que je me sens stupide d'avoir écrit le mien? –

+0

Édité pour tenir dans moins de 15 caractères: p – sigjuice

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

générerait un C comme tableau à partir stdin, mais il n'y a pas de déclaration, pas des accolades ou une bonne mise en forme.

3

Je sais que c'est une question Unix/Linux, mais tous les utilisateurs qui souhaitent faire la même chose avec Windows peuvent utiliser Bin2H.

+0

xxd est également disponible pour Windows. – DrAl

10

Pour les fichiers volumineux, la conversion en texte et l'analyse ultérieure du compilateur sont inefficaces et inutiles. Utilisez objcopy à la place:

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

(. Réglez l'architecture de sortie nécessaire pour les plateformes non-x86) Ensuite, une fois que vous liez dans votre programme, vous pouvez y accéder comme ceci:

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

... 

foo(_binary_stuff_start[i]); 
Questions connexes