Копирование массива байтов в различные поля класса / структуры в C #

В приведенном ниже примере кода C # у меня есть массив байтов, который был прочитан из сокета. Я хочу проанализировать данные в различных полях exampleClass (первые 8 байтов в 64-битной переменной field1, следующие 4 байта в 32-битной переменной field2 и т. д.)

using System;
namespace CsByteCopy
{
  class Program
  {
    class ExampleClass
    {
      public UInt64 field1;
      public UInt32 field2;
      public UInt16 field3;
      public byte[] field4 = new byte[18];
    }

    static void Main(string[] args)
    {
      byte[] exampleData =
      {
        // These 8 bytes should go in 'field1'
        0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
        // These 4 bytes should go in 'field2'
        0x08,0x09,0x0A,0x0B,
        // These 2 bytes should go in 'field3'
        0x0C,0x0D,
        // These 18 * 1 bytes should go in 'field4'
        0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
      };

      ExampleClass exampleClass = new ExampleClass();
      // Perform copy
    }
  }
}

Прошло много времени с тех пор, как я в последний раз использовал C, но, если я правильно помню, мне, возможно, удалось бы обойтись одним вызовом memcpy () для заполнения всех полей в классе. Какой самый эффективный способ заполнение полей exampleClass в C #?

6
задан JamesPD 11 August 2011 в 17:19
поделиться