C# socket接收十六进制数据,求帮助!!
本帖最后由 u011350661 于 2013-07-09 11:31:35 编辑 FF FF FF 2 0 0 1D 3 0 1 0 0 0 0 0 0 0 0 0 40 数据大概就是这种格式,FF FF FF是开头,是一个byte[19]的数组,这个数据发送过来的时候,C#在接收的时候,单个的0会不会影响数据接收的格式??????
3个FF后,前3个字节,代表一个数据,然后是1个字节,然后是2个字节,1个字节,最后一堆就不用管了。
我在接收的时候是不是应该这么写?
while (true) {
byte[] b2 = new byte[2]; //先用3个字节来判断FF FF FF
int r = socket1.Receive(b2,b2.Length,0);
if(r == 0){
continue ;
}
if(Encoding .ASCII .GetString (b2,0,r) != "FFFFFF"){ //如果找到3个FF 就开始找后面的17个字节
break ;
}else{
byte[] b3 = new byte[16];
int rs = socket1.Receive (b3,b3.Length ,0); //这个接收会不会影响我下面写的数据转换???
if(rs == 0){
continue ;
}
string dingwei = b3[2].ToString("X2") + b3[1].ToString("X2") + b3[0].ToString("X2") ; //这是开始的前3个
string speed = b3[3].ToString("X2");
string angle = b3[5].ToString("X2")+ b3[4].ToString("X2");
string fx = b3[6].ToString("X2");
}
if (b2[0]==0xFF&&b2[1]==0xFF&&b2[2]==0xFF) { //如果找到3个FF 就开始找后面的!16!个字节
byte[]
b3 = new byte[16];
Buffer.BlockCopy(b2, 3, b3, 0, 16);
byte[] buffer = new byte[19];
int len = 0;
while (true)
{
int r = socket1.Receive(buffer, len, buffer.Length - len, 0);
if (r == 0) break; // 断线
len += r;
if (len < 19) continue; // 数据不足继续收
if (buffer[0] == 0xff && buffer[1] == 0xff && buffer[2] == 0xff)
{
}
}