日期:2014-05-17  浏览次数:21035 次

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");
}




我这样写可以得到数据中的十六进制数据吗??????求大神帮我看一下 谢谢了!~!!

socket 16进制

------解决方案--------------------
自己调试下试试
------解决方案--------------------
用流来接收吧
------解决方案--------------------
要看你接受的是什么,如果是F字符,你可以判断是否等于FFFFF,但如果接受的是二进制数据流F和字符F就完全是两回事了
------解决方案--------------------