C++ 什么';s正确的格式以及如何正确组织.bin文件中的字节以在char数组[]中设置?
假设下面的字节数组包含一个可执行文件(.exe)的所有字节(实际上,这不可能在源代码中设置,因为该文件类型(.exe)中有很多字节,Visual Studio将崩溃) 然后,我认为实现这一点的更好方法是在.bin文件中插入,以便稍后在C++ 什么';s正确的格式以及如何正确组织.bin文件中的字节以在char数组[]中设置?,c++,arrays,windows,byte,C++,Arrays,Windows,Byte,假设下面的字节数组包含一个可执行文件(.exe)的所有字节(实际上,这不可能在源代码中设置,因为该文件类型(.exe)中有很多字节,Visual Studio将崩溃) 然后,我认为实现这一点的更好方法是在.bin文件中插入,以便稍后在char buffer[]上设置,如下所示: vector<char> buffer; ifstream infile; infile.open("bytes.bin", ios::binary); infile.seekg(0,
char buffer[]
上设置,如下所示:
vector<char> buffer;
ifstream infile;
infile.open("bytes.bin", ios::binary);
infile.seekg(0, ios::end);
size_t file_size_in_byte = infile.tellg();
buffer.resize(file_size_in_byte);
infile.seekg(0, ios::beg);
infile.read(&buffer[0], file_size_in_byte);
infile.close();
向量缓冲区;
河流充填;
infle.open(“bytes.bin”,ios::binary);
填充seekg(0,ios::end);
size_t file_size_in_byte=infle.tellg();
调整缓冲区大小(文件大小以字节为单位);
填充seekg(0,ios::beg);
infle.read(&buffer[0],文件大小(以字节为单位);
infle.close();
然后我问:
生成.bin文件的正确字节格式是什么
<>代码> > 0x60、0x33、0xc0、0x33、0xdB、0xeb、0x00、0x03、0xc3 >前面有“强> 0x< /强>,并用逗号和空格分隔(如链接的C++代码已做)?
0x600x330xC00x330xDB0xEB0x000x030xC3
-是否不带任何空格/分隔符60、33、C0、33、DB、EB、00、03、C3
-用逗号和空格分隔,但前面不带0x您根本不需要格式化,只需编写原始字节。您正在使用读取原始字节
infle.read(&buffer[0],文件大小以字节为单位);
类似地,使用ios::binary打开输出文件,只需调用
outfile.write(缓冲区[0],一些字节数);
infle.read(&buffer[0],文件大小以字节为单位)
与字符缓冲区[]={0x60、0x33、0xC0、0x33、0xDB、0xEB、0x00、0x03、0xC3}相同源代码?我假设您正在考虑infle
==可执行文件(.exe)。infle
不是可执行文件,而是您打开的文件,bytes.bin
。我认为outfile
也可以是bytes.bin
,或者您选择打开以进行输出的任何其他文件。那么,内容的格式怎么可能是bytes.bin
,这不是您的答案。请再一次阅读我的问题:D.Sorry,我不知道我在想完成什么,如果你想生成包含字节数组的C++源代码,那么选项1可能是你想要的。“无变量声明”是什么意思?格式化值是为人设置的。你的电脑不是人。它将愉快地读取字节。@IInspectable,然后我可以将其转换为char buffer[]
(或vector buffer
),这将相当于表示法>char buffer[]={0x60、0x33、0xC0、0x33、0xDB、0xEB、0x00、0x03、0xC3}代码>是否存在于.cpp?是。虽然那不是一个可执行文件。PE文件以字节0x4D 0x5A
@IInspectable开头,感谢您的澄清+1.
vector<char> buffer;
ifstream infile;
infile.open("bytes.bin", ios::binary);
infile.seekg(0, ios::end);
size_t file_size_in_byte = infile.tellg();
buffer.resize(file_size_in_byte);
infile.seekg(0, ios::beg);
infile.read(&buffer[0], file_size_in_byte);
infile.close();