Это может быть использовано, чтобы упорядочить массив байтов и повернуть порядок байтов. Удобно для сетевых сообщений, переданных от 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 #?

Ответы на вопрос(7)

Ваш ответ на вопрос