我有一张名为photo.jpg的照片。我使用xxd -i
为我的图像文件生成了一个C++文件。输出如下所示:
unsigned char photo_jpg[] = {
0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
0x01, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x84,...};
unsigned int photo_jpg_len = 24821;
我将该文件嵌入到我的main.cpp文件中,并构建它以生成我的可执行文件。
我怎么可能从可执行文件中读取十六进制转储文件中的图像文件呢?
"我尝试过什么"
我使用了xxd myfile.exe > file.txt.
当我检查用xxd生成的可执行文件的十六进制转储时,我发现photo_jpg字符数组的字节在可执行文件的某个地方。It is a screenshot of my executable hex dump.
我如何读取它并将其存储在字符数组中,就像它在嵌入到可执行文件中之前一样?
1条答案
按热度按时间wgeznvg71#
首先,我把我的zip文件转换成一个字符串,这是与这个命令:
xxd -p archive.zip > myfile.txt
然后,我使用这段代码在C++中生成zip文件十六进制转储的多行字符串:
然后,我把string.txt的内容放在一个全局变量中,使用下面的函数,我可以编写一个生成zip文件的程序。
"但这有什么意义"
重点是你可以在你的zip文件中有任何类型的资源。这样,你就可以用你的程序生成所需的资源,并用它们做一些事情。我认为这很酷。