给定任何文件的哪个程序创建C数组?

时间:2009-07-20 19:54:19

标签: c linux arrays unix

我记得在过去看到一个程序会接受任何文件并生成一个表示该文件作为输出的C数组;在某些情况下,它会阻止分发单独的文件。哪个Unix / Linux程序可以做到这一点?

5 个答案:

答案 0 :(得分:74)

答案 1 :(得分:12)

对于大型文件,转换为文本然后让编译器再次解析它是低效且不必要的。请改用objcopy

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

(根据非x86平台的需要调整输出架构。)然后,一旦将其链接到您的程序,您就可以这样访问它:

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

...

foo(_binary_stuff_start[i]);

答案 2 :(得分:4)

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

会从stdin生成一个类似C的数组,但没有声明,没有大括号或良好的格式。

答案 3 :(得分:3)

我知道这是Unix / Linux问题,但是想要在Windows中执行此操作的任何人都可以使用Bin2H

答案 4 :(得分:0)

最简单的方法是:

xxd -i -a filename