c# Socket 16进制数据获取和显示有关问题

c# Socket 16进制数据获取和显示问题
c# Socket 16进制数据获取和显示有关问题
图中的别人写的调试软件可以连接通讯设备正常接收数据,按照FF FF FF FF  CA CB CC CC开头 ,EA EB EC ED结尾.
如果不选择16进制显示收过来的全是乱码,请问如何实现选择16进制显示数据显示成图中数据格式的样子的功能c#.?
我使用BitConverter.ToString(data),为什么数据是这样的呢多了很多0
c# Socket 16进制数据获取和显示有关问题
------解决思路----------------------
引用:
Quote: 引用:


                var socket = ar.AsyncState as Socket;
                var length = socket.EndReceive(ar);
                byte[] reallData = new byte[length];
                Array.Copy(buffer, reallData, length);

不太明白你的意思 刚接触Socket.
以下是我的代码

        public void SendMessage()
        {
            // 构造用于发送的 字节缓冲.
            Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);
            // 构造用于接收的 字节缓冲.
            Byte[] recvBytes = new Byte[1000];
            // IP地址.
            IPAddress localAddr = IPAddress.Parse("192.168.0.133");
            // 接入点.
            IPEndPoint ephost = new IPEndPoint(localAddr, PORT);
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                // 尝试连接主机.
                s.Connect(ephost);

                //Console.WriteLine("向服务器发送到了:{0}", SEND_MESSAGE);
                //// 向主机发送数据.
                //s.Send(sendBytes, sendBytes.Length, SocketFlags.None);
                //// 接收服务器的应答.
                Int32 bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

                StringBuilder buff = new StringBuilder();
                while (bytes > 0)
                {
                    //// 将缓冲的字节数组,装换为字符串.
                    //String str = ASCII.GetString(recvBytes, 0, bytes);
                    //// 加入字符串缓存
                    //buff.Append(str);
                    //// 再次接受,看看后面还有没有数据.
                    //bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

                    Console.Write(BitConverter.ToString(recvBytes));
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine("连接/发送/接收过程中,发生了错误!");
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                s.Close();
            }
        }


while循环有问题,不能接受一点数据就转换成字符串,而应该是获得完整的byte[]后,直接按16进制显示或再转换成字符串。