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

С# как добавить байт в байтовый массив

Как добавить байт в начало существующего массива байтов? Моя цель - сделать массив размером 3 байта до 4 байтов. Поэтому, почему мне нужно добавить отступ в начале его.

4b9b3361

Ответ 1

Вы не можете этого сделать. Невозможно изменить размер массива. Вы должны создать новый массив и скопировать данные на него:

byte[] newArray = new byte[theArray.Length + 1];
theArray.CopyTo(newArray, 1);
newArray[0] = theNewByte;
theArray = newArray;

Ответ 2

Как указывали многие люди, массивы на С#, а также на большинстве других распространенных языков, статичны. Если вы ищете что-то большее, чем массивы PHP, о которых я просто догадаюсь, так как это популярный язык с массивами с динамическим размером (и напечатанными!), Вы должны использовать ArrayList:

var mahByteArray = new ArrayList<byte>();

Если у вас есть массив байтов из другого места, вы можете использовать функцию AddRange.

mahByteArray.AddRange(mahOldByteArray);

Затем вы можете использовать Add() и Insert() для добавления элементов.

mahByteArray.Add(0x00); // Adds 0x00 to the end.
mahByteArray.Insert(0, 0xCA) // Adds 0xCA to the beginning.

Нужно ли вернуть его в массив?.ToArray() вы покрыли!

mahOldByteArray = mahByteArray.ToArray();

Ответ 3

Массивы не могут быть изменены, поэтому вам нужно allocte новый массив, который больше, напишите новый байт в начале его и используйте Buffer.BlockCopy для переноса содержимого старого массива через.

Ответ 4

Чтобы предотвратить повторный вызов массива каждый раз, когда это не эффективно

Как насчет использования Stack

csharp> var i = new Stack<byte>();
csharp> i.Push(1);
csharp> i.Push(2); 
csharp> i.Push(3); 
csharp> i; { 3, 2, 1 }

csharp> foreach(var x in i) {
  >       Console.WriteLine(x);
  >     }

3 2 1

Ответ 5

Хотя внутри он создает новый массив и копирует в него значения, вы можете использовать Array.Resize<byte>() для получения более читаемого кода. Также вы можете рассмотреть возможность проверки класса MemoryStream в зависимости от того, чего вы пытаетесь достичь.