我有这样的字节数组在C#中:C#如何只读取字节数组[]中的选定值?
byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06};
如何只能读取的字节数组{0×01,0×06}价值? 我该怎么办?我真的是C#的新手。感谢您的关注。
我有这样的字节数组在C#中:C#如何只读取字节数组[]中的选定值?
byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06};
如何只能读取的字节数组{0×01,0×06}价值? 我该怎么办?我真的是C#的新手。感谢您的关注。
首先,我想你是以错误的方式声明数组,你错过了逗号。
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();
非常感谢你,这是我需要的答案。 – yose
首先,你的初始化是错误的。
像'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));
是的,'5d'是(也)双重字面,但OP意味着十六进制格式的字节值。正确的方法是'0x5D'。 –
[C#教程阵列(https://msdn.microsoft.com/en-us/library/aa288453%28v=vs.71%29.aspx) – txtechhelp
你不给错误同时声明字节错误。 – JeetDaloneboy
是的,我忘记了逗号。 – yose