4

私は現在wavファイルに取り組んでおり、それらを解析しています。今のところライブラリは使いたくありません。wav ファイルを fstream で開き、すべてのデータをベクターに読み込みます。ここで、wav ファイルのヘッダーを解析したいと思います。たとえば、4 バイト目から 8 バイト目までのファイルサイズを取得したいとします。これを整数に割り当てたい。これは memcpy で簡単に実現できますが、C++ であるため、memcpy は使用したくありません。私が最終的に解決する解決策:

std::vector<unsigned char>::iterator vectorIte = soundFileDataVec.begin();
vawParams.totalfilesize = 0;
//Since it is little endian I used reverse_copy
std::reverse_copy(vectorIte + 4, vectorIte + 7, (unsigned char*)&vawParams.totalfilesize);

(unsigned char*) を整数ポインターにキャストすることに満足していません。私よりも良い方法があると思います。より良い方法を教えてください。

4

2 に答える 2

2

バイナリ シリアライゼーションの領域に入ると、移植可能になりたいがライブラリを使用したくない場合は、プログラミング言語で型がどのように提示されるかという抽象化レイヤーの下にほとんど潜り込む必要があります。ファイルにどのように格納されているかを正確に理解する必要があり、それを取得して、コンパイル対象のプラットフォームのコンパイラーにある型の表現に変換する方法を正確に理解する必要があります。

キャストを回避しようとすることは、これらの制約の下ではおそらく本質的に間違っています。

于 2013-07-21T15:28:35.970 に答える