C#如何从字节数组中提取字节?用已知的起始字节

时间:2015-02-13 12:36:35

标签: c# arrays byte bytearray

我需要从字节数组中获取特定字节。我知道我想要的第一个字节的内容,之后我需要x个字节。

例如,我有

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

我需要在“0x55”之后出现的3个字节

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

3 个答案:

答案 0 :(得分:3)

这可以这样实现:

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);

答案 1 :(得分:2)

我想你只需要搜索整个数组中的特定值,并记住你找到它的索引......

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

从这里开始用找到的索引做你想做的事。

P.S。也许有轻微的语法失败,因为我通常使用C ++ .net

答案 2 :(得分:1)

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

谢谢大家。

这是我的代码。它像我期望的那样工作:)