如何用C#查找byte[]里包含某个字符?
我现在通过串口获取到了一串数据大概是这样的buffer[](它是byte[]类型)={…0x34,0x33,0x00,0x3D,0x00,0x01,0x02,0x03,0...
我现在通过串口获取到了一串数据大概是这样的
buffer[](它是byte[]类型)={…0x34,0x33,0x00,0x3D,0x00,0x01,0x02,0x03,0x04,0x05,……}
怎么用C#实现找到从3D开始往后的8个数据?3D具体位置不知道~看string类型可以用.contian()方法,那byte[]类型呢?? 展开
buffer[](它是byte[]类型)={…0x34,0x33,0x00,0x3D,0x00,0x01,0x02,0x03,0x04,0x05,……}
怎么用C#实现找到从3D开始往后的8个数据?3D具体位置不知道~看string类型可以用.contian()方法,那byte[]类型呢?? 展开
展开全部
以下实现byte数组里面查找另一个byte数组在第一个数组里面的位置,可通过修改bb数组的值是否存在于b数组的值就可实现是否包含某个字符
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;
}
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;
}
展开全部
个人感觉,自己写个函数吧,用foreach去遍历下,判断是3D了就break
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先int i = 0;
然后遍历到符合buffer[i] == 0x3D
就break;
再for(int j=1;j<=8;j++)
输出buffer[i+j]
然后遍历到符合buffer[i] == 0x3D
就break;
再for(int j=1;j<=8;j++)
输出buffer[i+j]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询