-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

ePRおよびfはバイトです。ファイルの長さは 4 文字 (バイト) で、そこに入力した内容が含まれています。

「バイナリ ファイル」と「テキスト ファイル」の唯一の違いは、Windows での改行の読み取り/書き込み方法です (非常に古い OS では他の特殊文字もあるかもしれません)。e文字と数字の唯一の違いは65、ファイルを読み取るために使用しているプログラムがそれを表示する方法を選択することです。テキスト エディタが表示さeれ、16 進エディタが表示されます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 に答える