Я пытаюсь получить доступ к некоторому члену данных внутри двоичного файла, используя определение структуры.Доступ к члену struct в 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. Например, я получаю номер 1606416148, если я использую printf («% d», x.fxID); Однако это неправильно, потому что я считаю, что fxID - это 1447514692. Это из-за энтианности? Я знаю, что файл большой endian, и он упоминает что-то о необходимости его преобразования в файл заголовка, с которым я связан.
Возможно, это связано с использованием Int? или, возможно, неправильный тип?
Я думаю, у меня дежа-Vous - http://stackoverflow.com/questions/39556266/cc-extract-struct-member-from-binary-file/39556551#comment66424088_39556551 –
может понадобиться маркер в начале файл относительно версии, т.е. 'VST_2_4_EXTENSIONS' –
Да, я забыл добавить, что в моем собственном определении структуры я удаляю оператор if, и я все еще пытаюсь понять, почему я не могу получить доступ к данным внутри структур в значимом путь. Все еще не нашли решения проблем, с которыми я сталкиваюсь. –