我有以下代码(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”字节。
谢谢大家。
答案 0 :(得分:4)
e
,P
,R
和f
是字节。该文件长度为4个字符(字节),它包含您放置的内容。
“二进制文件”和“文本文件”之间的唯一区别是如何在Windows上读取/写入换行符(以及在非常旧的操作系统上可能还有一些其他特殊字符)。字符e
和数字65
之间的唯一区别是您用于读取文件的程序选择如何显示它。文本编辑器将显示e
,十六进制编辑器将显示65
。
答案 1 :(得分:2)
这是你想要做的吗?
for( unsigned int i=0; i<bytes.size(); ++i ) {
file << int(bytes[i]);
}
答案 2 :(得分: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();
它工作正常,在输出文件中,使用文本编辑器我只有字节码。