Подтвердить что ты не робот

В С#, как я могу обрезать массив byte []

У меня есть массив byte [] одного размера, и я хотел бы усечь его в меньший массив?

Я просто хочу отрубить конец.

4b9b3361

Ответ 1

Массивы имеют фиксированный размер в С# (.NET).

Вам нужно будет скопировать содержимое в новое.

byte[] sourceArray = ...
byte[] truncArray = new byte[10];

Array.Copy(sourceArray , truncArray , truncArray.Length);

Ответ 2

Вы можете использовать Array.Resize, но все, что это действительно делает, это сделать усеченную копию исходного массива, а затем заменить исходный массив на новый.

Ответ 3

    private static void Truncate() {

        byte[] longArray = new byte[] {1,2,3,4,5,6,7,8,9,10};

        Array.Resize(ref longArray, 5);//longArray = {1,2,3,4,5}

        //if you like linq
        byte[] shortArray = longArray.Take(5).ToArray();

    }

Ответ 4

Кстати, метод Array.Resize требует гораздо больше времени для завершения. В моем простом случае мне просто нужно было изменить размер массива байтов (~ 8000 элементов до ~ 20 элементов):

  • Array.Resize//1728 тиков
  • Array.Copy//8 тиков

Ответ 5

Обычно я создаю метод расширения:

 public static byte[] SubByteArray(this byte[] byteArray, int len)
    {
        byte[] tmp = new byte[len];
        Array.Copy(byteArray, tmp, len);

        return tmp;
    }

Что можно вызывать в массиве байтов так легко:

buffer.SubByteArray(len)

Ответ 6

Вы не можете обрезать массив в С#. Они фиксированы по длине.

Если вам нужна структура данных, которую вы можете усекать и действовать как массив, вы должны использовать List<T>. Для этого вы можете использовать метод List<T>.RemoveRange.