Я прочитал файл в структуру, используя этот код:
StructType aStruct;
int count = Marshal.SizeOf(typeof(StructType));
byte[] readBuffer = new byte[count];
BinaryReader reader = new BinaryReader(stream);
readBuffer = reader.ReadBytes(count);
GCHandle handle = GCHandle.Alloc(readBuffer, GCHandleType.Pinned);
aStruct = (StructType) Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(StructType));
handle.Free();
Но я заметил, что любая переменная размером больше байта, например int32, int16, получает данные в обратном направлении. Например, если в файле данные были: AA BB CC DD
соответствующая переменная (int32) будет: DD CC BB AA.
Моя структура определена с атрибутом [StructLayout(LayoutKind.Sequential), Pack = 1]
Кто-нибудь знает, почему и как это решить?
Спасибо!