脚本/工具将文件转换为C / C ++源代码数组
我需要一个脚本/工具读取二进制文件,并输出一个C / C ++源代码数组(代表文件内容)。 有没有?
(这个问题之前被删除了,我把这个问题重新提了一下,因为这个问题很有价值,我在Google上search这个东西,但是没有发现任何东西,当然编码是很简单的,但是如果我会发现这样一个简单的脚本,因此它是有价值的。
这个问题也有很多没有太多解释的回应。 请在投票前发表评论,为什么你认为这是没有价值或价值不好的。
这个问题也引起了我所问的很多混乱。 如果有什么不清楚的地方,请问。 我真的不知道如何使它更清楚。 看例子的答案。
另外(在提出这个问题之后),我已经有了几个答案。 我只是想在这里(再次)把它们连接起来,因为我认为这对其他人来说可能是有用的。)
在Debian和其他Linux发行版默认情况下(和vim
)安装了xxd
工具,在给定-i
选项的情况下,它可以做你想做的事情:
matteo@teodeb:~/Desktop$ echo Hello World\! > temp matteo@teodeb:~/Desktop$ xxd -i temp unsigned char temp[] = { 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x0a }; unsigned int temp_len = 13;
一个简单的工具可以在这里find:
#include <stdio.h> #include <assert.h> int main(int argc, char** argv) { assert(argc == 2); char* fn = argv[1]; FILE* f = fopen(fn, "rb"); printf("char a[] = {\n"); unsigned long n = 0; while(!feof(f)) { unsigned char c; if(fread(&c, 1, 1, f) == 0) break; printf("0x%.2X,", (int)c); ++n; if(n % 10 == 0) printf("\n"); } fclose(f); printf("};\n"); }