-1

我有以下代码(C++)

vector<unsigned char> bytes;
bytes.push_back('e');
bytes.push_back('P');
bytes.push_back('R');
bytes.push_back('f');

...

ofstream file(compiledFile, ios::out | ios::binary);
file.write((const char*) &binary[0], binary.size());
file.close();

但结果是输出文件我有“rPRf”而不是字节。

我做错了什么?结果我需要“65505266”字节。

谢谢你们。

4

3 回答 3

4

e, P,Rf是字节。该文件有 4 个字符(字节)长,其中包含您放在那里的内容。

“二进制文件”和“文本文件”之间的唯一区别是如何在 Windows 上读取/写入换行符(在非常旧的操作系统上可能还有一些其他特殊字符)。e字符和数字之间的唯一区别65是您用来读取文件的程序如何选择显示它。将显示一个文本编辑器e和一个十六进制编辑器65

于 2013-02-06T20:56:28.683 回答
2

这是你想要做的吗?

for( unsigned int i=0; i<bytes.size(); ++i ) {
    file << int(bytes[i]);
}
于 2013-02-06T20:58:01.303 回答
0

当我尝试这个时

unsigned char * array = new unsigned char [4];
*(array)='e';
*(array+1)='P';
*(array+2)='R';
*(array+3)='a';

std::ofstream out(fname, std::ofstream::binary);
out.write((char*)array,3);
out.close();

它工作正常,在输出文件中,使用文本编辑器我只有字节码。

于 2013-02-07T10:15:27.820 回答