byte[] data = new byte[] { 0xf2, 0x7d, 0xf2, 0x7d, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0xeb, 0xeb, 0xb7, 0xeb, 0xeb, 0xb7, 0xeb, 0xb7, 0xf2, 0x7d, 0xf2, 0x7d, 32, 23, 43, 54, 0xeb, 0xb7, 0xeb, 0xb7, 0xf2, 0x7d, 0xf2, 0x7d, 12, 0xeb, 0xb7, 0xeb, 0xb7 };byte[] headbyte=new byte[]{ 0xf2, 0x7d, 0xf2, 0x7d,};//帧头
byte[] endbyte=new byte[]{ 0xeb, 0xb7, 0xeb, 0xb7,};//帧尾int numh=headbyte.Length;
int nume=endbytee.Length;List<byte[]> list = new List<byte[]>();
List<byte> section = new List<byte>();
int flag = 0;
int index = 0;List<byte> section = new List<byte>();MemoryStream s = new MemoryStream();
foreach ( byte b in data )
{
head:
if ( b == (byte) 0 && flag==0){
if(s.Read(data,b,num).Equals(headbyte))
{
flag=1;
section.Add( b );
}
} .
.
.end :
if ( b == (byte) 0 && flag==1){
if(s.Read(data,b,num).Equals(endbyte))
{
flag=0;
section.Add( b );
}
}
.
.
.
}
-----------------------------------
根据 Ivony(授人以鱼不如授人以渔,上海谋生) ( ) 信(http://community.csdn.net/Expert/TopicView3.asp?id=5417435
)改的不知道能用不 主要是匹配方式改了下提供下思路: 不用象Ivony(授人以鱼不如授人以渔,上海谋生) ( ) 信那样 挨个比较
0xf2, 0x7d, 0xf2, 0x7d是帧头,0xeb, 0xb7, 0xeb, 0xb7是帧尾 是固定匹配的就整体比较;
就是 帧头→帧头、帧尾 →帧尾 、帧尾→帧头几种情况怎么处理机制 看你怎么设置了。
flag 也是标志位
byte[] endbyte=new byte[]{ 0xeb, 0xb7, 0xeb, 0xb7,};//帧尾int numh=headbyte.Length;
int nume=endbytee.Length;List<byte[]> list = new List<byte[]>();
List<byte> section = new List<byte>();
int flag = 0;
int index = 0;List<byte> section = new List<byte>();MemoryStream s = new MemoryStream();
foreach ( byte b in data )
{
head:
if ( b == (byte) 0 && flag==0){
if(s.Read(data,b,num).Equals(headbyte))
{
flag=1;
section.Add( b );
}
} .
.
.end :
if ( b == (byte) 0 && flag==1){
if(s.Read(data,b,num).Equals(endbyte))
{
flag=0;
section.Add( b );
}
}
.
.
.
}
-----------------------------------
根据 Ivony(授人以鱼不如授人以渔,上海谋生) ( ) 信(http://community.csdn.net/Expert/TopicView3.asp?id=5417435
)改的不知道能用不 主要是匹配方式改了下提供下思路: 不用象Ivony(授人以鱼不如授人以渔,上海谋生) ( ) 信那样 挨个比较
0xf2, 0x7d, 0xf2, 0x7d是帧头,0xeb, 0xb7, 0xeb, 0xb7是帧尾 是固定匹配的就整体比较;
就是 帧头→帧头、帧尾 →帧尾 、帧尾→帧头几种情况怎么处理机制 看你怎么设置了。
flag 也是标志位
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0xeb, 0xb7, 0xeb,
0xb7, 0xf2, 0x7d, 0xf2, 0x7d, 0x12, 0x12, 0x23, 0x32, 0x31, };
byte[] startBytes = new byte[] { 0xf2, 0x7d, 0xf2, 0x7d, }; //帧头
byte[] endBytes = new byte[] { 0xeb, 0xb7, 0xeb, 0xb7, }; //帧尾int i = Encoding.ASCII.GetString(data).IndexOf(
Encoding.ASCII.GetString(startBytes));
if (i < 0) return;
int j = Encoding.ASCII.GetString(data, i,
data.Length - i).IndexOf(Encoding.ASCII.GetString(endBytes));
if (j < 0) return;textBox1.Text = BitConverter.ToString(data, i, i + j + endBytes.Length - 1);