必须byte[] b={1,2,3,4,6,0,4,6};
需要查找的是bte[] bb={4,6};
类似字符窜查找indexof的。
怎么最快的查找?
需要查找的是bte[] bb={4,6};
类似字符窜查找indexof的。
怎么最快的查找?
解决方案 »
- datagridview 和数据库问题
- C# linq问题
- c# 编写windows services时候,显示在Services里面的Description属性在哪里设置?
- [神奇的问题]第一次可以用程序对DataGridView控上的列的HeaderText属性赋值,在操作事件里重新给HeaderText赋值时,HeaderText值就不改变了?还是显示是第一次给它赋的值
- 利用avicap32.dll实现的实时视频传输,在发送和接收视频时应该怎样编写程序?
- C#的窗口过程
- devTreeList绑定多张表
- 誰能給一個完整的SQLDATABASE底層連接類啊
- 问一个.net的部署问题
- 怎样不用水晶报表做发票的套打?
- c# 获取部分图片
- C#结构体数组初始化问题新方法
{
if (b == null || bb == null || b.Length == 0 || bb.Length == 0)
return -1; int i, j;
for (i = 0; i < b.Length; i++)
{
if (b[i] == bb[0])
{
for (j = 1; j < bb.Length; j++)
{
if (b[i + j] != bb[j])
break;
}
if (j == bb.Length)
return i;
}
}
return -1;
}//调用代码
byte[] b = { 1, 2, 3, 4, 6, 0, 4, 6 };
byte[] bb = { 4, 6 }; int i = GetIndexOf(b, bb);
byte[] bb={4,6};
int query = b.Select((x, i) => new { i, x = b.Skip(i).Take(2) }).FirstOrDefault(x => x.x.SequenceEqual(bb)).i;
设置4.0虽然支持linq,但是我一个方法莫名报错
api如下
对 PInvoke 函数“WindowsFormsApplication1!WindowsFormsApplication1.Api::VirtualQueryEx”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
你的api声明可能有问题。
byte[] bb = { 4, 6 };
var i = b.Select((t, index) => new { t = t, index = index }).FirstOrDefault(t => b.Skip(t.index).Take(bb.Length).SequenceEqual(bb)).index;
改这样就不越界了 public int GetIndexOf(byte[] b, byte[] bb)
{
if (b == null || bb == null || b.Length == 0 || bb.Length == 0 || b.Length<bb.Length)
return -1; int i, j;
for (i = 0; i < b.Length - bb.Length + 1; i++)
{
if (b[i] == bb[0])
{
for (j = 1; j < bb.Length; j++)
{
if (b[i + j] != bb[j])
break;
}
if (j == bb.Length)
return i;
}
}
return -1;
}