У меня есть проблема (и я думаю, что ее легко решить, но она сводит меня с ума).Я проверил другие сообщения, но я не смог найти решение.
Я хотел бы прочитать двоичный файл в структуру с использованием C ++ / CLI.Проблема в том, что после прочтения некоторые значения не соответствуют правильным.В приведенном ниже примере все поля структуры хорошо читаются до «а» (включено) (около байта 100).Из этого поля остальные имеют неправильные значения.Я знаю, что они имеют неправильные значения и исходный файл правильный, так как я ранее использовал Python, а также FileStream
и BinaryReader
из C ++ / CLI.Однако я больше не использую их, учитывая, что я хотел бы прочитать двоичный файл в структуру.
Кроме того, в некоторых случаях у меня также есть значение -1 для переменной "size" (sizeфайла), но не всегда.Я не уверен, может ли он получить неправильное значение, когда файл слишком большой.
Поэтому мой вопрос, можете ли вы увидеть что-то, чего я не могу, или я делаю что-то не так.
struct LASheader
{
unsigned short x;
char y[16];
unsigned char v1;
unsigned char v2;
char y1[68];
unsigned short a;
unsigned long b;
unsigned long c;
unsigned char z;
unsigned short d;
unsigned long e;
}
void main()
{
FILE *ptr = fopen("E:\\Pablo\\file.las", "rb");
//I go at the end of the file to get the size
fseek(ptr, 0L, SEEK_END);
unsigned long long size = ftell(ptr);
struct LASheader lasHeader;
//I want an offset of 6 bytes
fseek(ptr, 6, SEEK_SET);
fread(&lasHeader, sizeof(lasHeader), 1, ptr);
unsigned short a1 = lasHeader.a;
unsigned long b1 = lasHeader.b;
unsigned long c1 = lasHeader.c;
unsigned short d1 = lasHeader.d;
unsigned long e1 = lasHeader.e;
}
Спасибо!
Пабло.