二进制模式下写入向量<无符号字符>

Write vector<unsigned char> in binary mode

本文关键字:lt 字符 gt 无符号 向量 模式 二进制      更新时间:2023-10-16

我有以下代码(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"个字节。

谢谢大家。

ePRf是字节。该文件有4个字符(字节)长,其中包含您放置的内容。

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

这就是您想要做的吗?

for( unsigned int i=0; i<bytes.size(); ++i ) {
    file << int(bytes[i]);
}

当我尝试这个时

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();

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