C# Как извлечь байты из байтового массива? С известным начальным байтом

Мне нужно получить конкретные байты из байтового массива. Я знаю содержимое первого байта, который я хочу, и мне нужно x байтов после этого.

Например, у меня есть

byte [] readbuffer { 0, 1, 2, 0x55, 3, 4, 5, 6};
byte [] results = new byte[30];

и мне нужны 3 байта, которые появляются после "0x55"

byte results == {ox55aa, 3, 4, 5}

Я использую:

Array.copy(readbuffer, "need the index of 0x55" ,results, 0, 3);

Мне нужно найти индекс 0x55

PS: 0x55 находится в произвольном положении в массиве. PS2: я забыл упомянуть, что я работаю в.Net Micro Framework.

(Извините за не кодовое описание, я очень новичок в программировании... и английском)

заранее спасибо

[Редактировать]x2

4 ответа

Решение
        byte[] results = new byte[16];
        int index = Array.IndexOf(readBuffer, (byte)0x55);
        Array.Copy(readBuffer, index, results, 0, 16);

Спасибо вам всем.

Это мой код сейчас. это работает как я ожидаю:)

Это может быть достигнуто следующим образом:

byte[] bytes = new byte[] { 1, 2, 3, 4, 0x55, 6, 7, 8 };
byte[] newBytes = new byte[4];
Buffer.BlockCopy(bytes,Array.IndexOf(bytes,(byte)0x55), newBytes,0,4);

Я думаю, вам просто нужно найти во всем массиве конкретное значение и запомнить индекс, в котором вы его нашли...

int iIndex = 0;  
for (; iIndex < valuearray.Length; iIndex++);
  if (valuearray[iIndex] == searchedValue) break;

и с этого момента делать то, что вы хотите с найденным индексом.

PS возможно, есть небольшие синтаксические ошибки, так как я обычно использую C++.NET

      byte[] bufferMain = new byte[16];
int indexStart = 3;  // starting index of sub-array of bytes
int indexEnd = 8;    // end index of sub-array of bytes
var bufferSub = new ReadOnlySpan<byte>(bufferMain, indexStart, indexEnd - indexStart).ToArray();
Другие вопросы по тегам