求助关于C#的Array.IndexOf方法的问题

查看 36|回复 3
作者:grekevin   
我想在某个byte数组中查找字节成员0x02首次出现的索引值
[C#] 纯文本查看 复制代码using System;
class ByteSearch
{
    static void Main()
    {
        byte[] mybytes = new byte[] { 0x00, 0x00, 0x01, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
        
        // 使用Array.IndexOf查找0x02在数组中的位置
        int index = Array.IndexOf(mybytes, 0x02);
        Console.WriteLine($"0x02 所在位置为: {index}");
    }
}
但是返回的下标值一直就是-1,求大佬解答这是为什么

大佬, 组中

skypaladin   

显式地将 0x02 转换为 byte 类型
int index = Array.IndexOf(mybytes, (byte)0x02);
黄薛海   

类型不匹配
int index = Array.IndexOf(mybytes, 0x02);
改为
int index = Array.IndexOf(mybytes, (byte)0x02);
黄薛海   

AI生成的
[C#] 纯文本查看 复制代码   using System;
   using System.Linq;
   class ByteSearchLinq
   {
       static void Main()
       {
           byte[] mybytes = new byte[] { 0x00, 0x00, 0x01, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
           int targetValue = 0x02;
           var index = mybytes.Select((b, i) => new { ByteValue = b, Index = i })
                             .FirstOrDefault(item => item.ByteValue == targetValue)?.Index?? -1;
           Console.WriteLine($"0x02 所在位置为: {index}");
       }
   }
借助 LINQ 的查询功能,可以更加简洁地实现查找特定字节在数组中的位置。这种方法首先将数组转换为一个包含字节值和索引的匿名类型序列,然后使用FirstOrDefault方法找到第一个满足条件的元素,并获取其索引值。如果没有找到匹配的元素,则返回 -1。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部