wavやjpgなど、バイナリデータの読み書きについて質問です
Posted: 2011年9月09日(金) 10:04
バイナリデータの入出力が上手く行かずに困っています。
以下のようなコードを書いたのですが、
ifstream ifs( "files.dat",ios::binary );
BYTE* Data = new BYTE[ FileSize ]; // FileSize = 27
ifs.read( (char*)Data , FileSize );
これをバイナリファイルに出力すると、ファイルのバイト数が38になってしまいます。
末尾に適当なデータが入ってしまい、読み書きの際に整合性を保てません。
wavやjpgなど、バイトデータをメモリに読み込むときも、なぜかデータが大きく確保され、
音声や画像にノイズが乗ってしまいます。
(ファイルサイズはboostを用いて取得、実データと見比べて1バイトの狂いもなく取得できていることを確認しました)
ファイルに書き出す際には、以下のようなコードを書いた所、ファイルサイズ通りに書きだされ、問題なく出力できました
ofstream ofs( "ofiles.dat",ios::binary );
ofs.write( (char*)Data , FileSize );
このような問題への対処法など、知ってる方いらしたら教えて下さい。
以下のようなコードを書いたのですが、
ifstream ifs( "files.dat",ios::binary );
BYTE* Data = new BYTE[ FileSize ]; // FileSize = 27
ifs.read( (char*)Data , FileSize );
これをバイナリファイルに出力すると、ファイルのバイト数が38になってしまいます。
末尾に適当なデータが入ってしまい、読み書きの際に整合性を保てません。
wavやjpgなど、バイトデータをメモリに読み込むときも、なぜかデータが大きく確保され、
音声や画像にノイズが乗ってしまいます。
(ファイルサイズはboostを用いて取得、実データと見比べて1バイトの狂いもなく取得できていることを確認しました)
ファイルに書き出す際には、以下のようなコードを書いた所、ファイルサイズ通りに書きだされ、問題なく出力できました
ofstream ofs( "ofiles.dat",ios::binary );
ofs.write( (char*)Data , FileSize );
このような問題への対処法など、知ってる方いらしたら教えて下さい。