我有一个字节列表变量,我在这里存储字节数组信息:
internal List<Byte> portBuffer = new List<Byte>();
我有另一个字节数组变量:
byte[] ret_bytes = { 0x4F, 0x4B };
如何判断ret_bytes是否在portBuffer中?下面的代码似乎不正确。
portBuffer.Contains(ret_bytes)
另一个问题,如果它在列表中,如何在portBuffer列表中查找ret_bytes的第一个元素的位置?
由于
答案 0 :(得分:1)
Contains
在另一个中找不到一个序列,它在一个序列中找到一个元素 - 我不相信.NET中有什么东西会做你想要的开箱即用。
由您决定是编写一个非常通用的实现还是只是解决您当前的问题 - 前者可能会更多工作,但从长远来看可能会带来红利。< / p>
如果你只需要找到两个字节,我很想迭代:
for (int i = 0; i < list.Count - 1; i++)
{
if (list[i] == 0x4f && list[i + 1] == 0x4b)
{
// Got it
}
}
答案 1 :(得分:1)
我相信你的评论是正确的,而且实际上已经有人问过了。能否请您确认这是您要问的问题:)
How do I use LINQ Contains(string[]) instead of Contains(string)
答案 2 :(得分:0)
使用LINQ - IEnumerable<T>.Intersect(IEnumerable<T>)
获取portBuffer
和ret_bytes
中显示的字节集。
var portBuffer = new List<Byte> {0x4F, 0x4B, 0x27};
byte[] ret_bytes = { 0x4F, 0x4B, 0x26 };
return portBuffer.Intersect(ret_bytes); // This will return { 0x4F, 0x4B }