解决方案 »

  1.   

    不用转二进制,直接byte数组转string不就可以了吗string str = System.Text.Encoding.Default.GetString (byteArray);
      

  2.   

    额?先用byte接收 然后转换成字符串?您看那个图中的协议没?
      

  3.   

    如果接收到的就是byte数组,那就是二进制,直接转成你要的信息
    如果接收到的是字符串,那就先逐个的解析放到byte数组中,在转换
      

  4.   

    用BitArray来做,代码可以比较清晰:class MyData
    {
        BitArray bits;
        public MyData(byte[] bytes)
        {
            if (bytes == null || bytes.Length != 8) throw new ArgumentException("must be an array of 8 bytes");        //Array.Reverse(bytes);
            this.bits = new BitArray(bytes);
        }    public int ObjectId 
        {
            get { return GetValue(0, 6); }  // 6bit
        }
        public float ObjectLength
        {
            get { return GetValue(6, 8) * 0.2f; } // 8bit; 单位0.2
        }
        public float VelocityY
        {
            get { return (GetValue(14, 11) - 1024)* 0.1f; } // 11bit,偏移1024; 单位0.1米/秒
        }
        public float VelocityX
        {
            get { return (GetValue(25, 11) - 1024) * 0.1f; } // 11bit,偏移1024; 单位0.1米/秒
        }
        public float RangeY
        {
            get { return (GetValue(36, 14) - 8192) * 0.032f; } // 14bit,偏移8192; 单位0.032米
        }
        public float RangeX
        {
            get { return (GetValue(50, 14) - 8192) * 0.032f; } // 14bit,偏移8192; 单位0.032米
        }    private int GetValue(int startBit, int length)
        {
            int value = 0;
            for(int i = 0; i<length; i++)
            {
                value = value + value + (bits[startBit + i] ? 1 : 0);
            }
            return value;
        }
    }