2016-09-15 61 views
2

我有这样的字节数组在C#中:C#如何只读取字节数组[]中的选定值?

byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06}; 

如何只能读取的字节数组{0×01,0×06}价值? 我该怎么办?我真的是C#的新手。感谢您的关注。

+0

[C#教程阵列(https://msdn.microsoft.com/en-us/library/aa288453%28v=vs.71%29.aspx) – txtechhelp

+0

你不给错误同时声明字节错误。 – JeetDaloneboy

+0

是的,我忘记了逗号。 – yose

回答

3

首先,我想你是以错误的方式声明数组,你错过了逗号。

byte[] reply = new byte[] {09, 02, 08, 63, 01, 01, 10, 21, 03, 5D, 01, 06}; 

接下来,如果你知道2点的值要阅读:(添加using System.Linq;到您的命名空间第一)

byte[] values = reply.Where(val => val == 01 || val == 06).ToArray(); 

或者,如果你有值,您在另一个阵列需要:

byte[] need = new byte[] { 01, 06 }; 
byte[] values = reply.Where(val => need.Contains(val)).ToArray(); 
+0

非常感谢你,这是我需要的答案。 – yose

2

首先,你的初始化是错误的。

  1. 值应该用逗号分隔。
  2. 像'5D'这样的值不是数据类型字节。

    byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06}; 
    var answer = reply.Where(x => x.Equals(0x01) || x.Equals(0x06)); 
    
+0

是的,'5d'是(也)双重字面,但OP意味着十六进制格式的字节值。正确的方法是'0x5D'。 –