У меня есть двоичный файл, содержащий данные, которые я хочу загрузить в объект Flatbuffer. В качестве игрушечного примера я использую следующую схему:
namespace SingleInt;
table Single{
value:uint32;
}
root_type Single;
Учтите, что мой бинарный файл содержит именно эту информацию: значение unsigned int
и ничего больше. В этом случае я сохранил значение 5
в своем файле. Я пытаюсь назначить и отобразить содержимое моего двоичного файла в свой объект Flatbuffer, используя следующий метод:
void readFbs(){
int fd = open("myfile", O_RDONLY, 0);
unsigned int* memmap = (unsigned int*)mmap(0, sizeof(unsigned int), PROT_READ, MAP_SHARED, fd, 0);
auto myfile = SingleInt::GetSingle(memmap);
std::cout<<myfile->value()<<std::endl;
}
На выходе получается значение 0
вместо значения 5
, которое, как я думал, я получу.
Мой вопрос: зная, как был сериализован и написан двоичный файл, если я создам схему, которая его представляет, можно ли загрузить его содержимое в объект Flatbuffer?
Изменить: функция для записи данных
void writebin(){
unsigned int var = 5;
std::ofstream OutFile;
OutFile.open("myfile", std::ios::out | std::ios::binary);
OutFile.write(reinterpret_cast<char*>(&var), sizeof(var));
OutFile.close();
}
unsigned int *
, но в данном случае это тоже не имеет значения. - person Aardappel   schedule 06.08.2019