質問

fstreamを使用してバイナリファイルに書き込み、バイナリフラグを使用してファイルを開くときに

テキストをバイナリとして書く必要がありましたが、単純な書き込みでうまくいきました。 問題は、16進数で示すように0も書き込む必要があることです。バイナリメモ帳で開いたときの値はゼロと表示されますが、これを書き込もうとすると0以外の値は16進数で30の値でした。

このような特定のデータの書き方

役に立ちましたか?

解決

fstreamを開くとき、 ios :: binary フラグを使用してバイナリ出力を指定します。詳細については、こちらをご覧ください。

0の書き込みに関しては、16進数で30が表示されている場合、2進数の0ではなく、文字 '0'を書き込んでいます。それをfstreamで行うには、次のようにします。 p>

my_fstream << 0;

バイナリデータ0にはテキスト表現がないため、文字 '0'を読むことができるようにメモ帳で読むことはできません。

他のヒント

おそらく次のようなものが必要なだけで、必要に応じて改善してください。

ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
    char buf[1] = {0};
    file.write(buf, sizeof(buf));
    file.close();
}

より洗練されたソリューションとドキュメントへのリンクはすでに投稿されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top