123-xiaoming
2020-07-02 09:28
采纳率: 25%
浏览 242

C#中,在一个数组中检索在另一个数组,如果存在返回数组的位置,如果不存在返回-1,如何实现?

C# 实现

例如
byte[] newbyte=new byte[]{0x7E,0x20,0x30,0x2F,0x19,0x2C};
byte[] b=new byte[]{0x20,0x30};
检索数组b在数组newbyte中的位置,
理论上应该返回1

有什么方法可以实现这个功能吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qq_28838019 2020-07-02 10:37
    已采纳

    static int search(byte[] haystack, byte[] needle)
    {
    for (int i = 0; i <= haystack.Length - needle.Length; i++)
    {
    if (match(haystack, needle, i))
    {
    return i;
    }
    }
    return -1;
    }

    static bool match(byte[] haystack, byte[] needle, int start)
    {
    if (needle.Length + start > haystack.Length)
    {
    return false;
    }
    else
    {
    for (int i = 0; i < needle.Length; i++)
    {
    if (needle[i] != haystack[i + start])
    {
    return false;
    }
    }
    return true;
    }
    }

    点赞 评论

相关推荐 更多相似问题