.NET 2.x unsafe byte array to struct array - C#

Узнай цену своей работы

Формулировка задачи:

Есть массив байт размером N. Есть структура, внутри которой enum поле размером в 1 байт. Как с помощью unsafe кода преобразовать массив байт в массив структур? Я пробовал, но чего-то хреново вышло, не то что надо. Первый элемент нормально преобразовал, а дальше по нулям

Решение задачи: «.NET 2.x unsafe byte array to struct array»

textual
Листинг программы
        private static unsafe MyStruct[] Convert(byte[] data, int structCount)
        {
            int structSize = Marshal.SizeOf(typeof(MyStruct));
 
            var arr = new MyStruct[structCount];
 
            fixed (byte* pData = &data[0])
            {
                for (int i = 0; i < structCount; i++)
                {
                    arr[i] = *(MyStruct*)(pData + (structSize * i));
                }
            }
 
            return arr;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы