構造体定義を使用して、バイナリファイル内のデータメンバーにアクセスしようとしています。構造体のC++へのアクセス
このファイルの内部には、fxIDという構造体メンバが含まれている必要があります。次のコードでは、fxIDにアクセスしようとしていますが、機能していません。不正な番号が返されています。さらに不思議なことに、fxIDをfxVersionに変更した場合、同じ数値になるので、printfが正しいデータを一切取り上げていないように見えます。
FILE *p;
struct myStruct x;
p=fopen("myfile.fxb","rb");
size_t n = fread(&x, sizeof(x), 1, p);
if (n != 1) {
// Some error message
//printf("%i", sizeof(x));
} else {
printf("\n\nID:%d\n", x.fxID);
}
なぜfxID内のデータにアクセスできないのですか?私はprintfステートメントでどのタイプを使用するかによって、奇妙な結果を得ています。たとえば、printf( "%d"、x.fxID)を使用すると1606416148という数字が得られます。しかし、これは間違っています。私はfxIDが1447514692だと信じているからです。これはエンディアンのためですか?私はファイルがビッグエンディアンであることを知っています。リンクされたヘッダーファイルでそれを変換する必要があると言います。
Intを使用している可能性がありますか?おそらく間違ったタイプですか?
私はデジャ-VOUS持っていると思う - http://stackoverflow.com/questions/39556266/cc-extract-struct-member-from-binary-file/39556551#comment66424088_39556551 –
は、開始時にマーカーが必要になる場合があります'VST_2_4_EXTENSIONS'のファイル。 –
はい、自分の構造体定義に追加するのを忘れました。if文を削除していますが、構造体内のデータに意味のあるデータをアクセスできない理由を理解しようとしています方法。 Imが直面する問題の解決策をまだ見つけていません。 –