Доброе время суток! - Столкнулся со следующей проблемой, мне необходимо записать данные из битового массива в структуру.
# Задача: необходимо считать первые 18 байт файла, и записать/привести их к структуре.
- Вот сам код подпрограммы:
| Код | [StructLayout(LayoutKind.Sequential, Pack = 1)] // Выравнивание побайтовое. public struct HEADER // 18 bytes; { public byte IDLength; /* 00h Size of Image ID field */ public byte ColorMapType; /* 01h Color map type */ public byte ImageType; /* 02h Image type code */ public ushort CMapStart; /* 03h Color map origin */ public ushort CMapLength; /* 05h Color map length */ public byte CMapDepth; /* 07h Depth of color map entries */ public ushort XOffset; /* 08h X origin of image */ public ushort YOffset; /* 0Ah Y origin of image */ public ushort Width; /* 0Ch Width of image */ public ushort Height; /* 0Eh Height of image */ public byte PixelDepth; /* 10h Image pixel size */ public byte ImageDescriptor; /* 11h Image descriptor byte */ } ... static public void GetFile(string FilePath) { FileStream fs = null; byte[] header = new byte[18]; // header // ---- try { fs = new FileStream(FilePath, FileMode.Open); fs.Read(header, 0, 18); // Маркер сдвинут на 18 байтов, так как произошло чтение; HEADER sgHeader = new HEADER(); unsafe { Marshal.Copy(header, 0, new IntPtr(&sgHeader), sizeof(HEADER_TGA)); } } catch (Exception) { } finally { if (fs != null) fs.Close(); } }
|
- Есть какой-то другой способ реализации данной проблемы? |