16进制数据转换成2进制又转换成明文数据

16进制数据转换成2进制再转换成明文数据
从雷达获取了一段数据,这个数据包含一些信息.

显示的时候为了方便查看  界面是显示成
00.0C.F5.81.4B.90.07.A0

这是一串16进制的数据,

我想将它转成2进制 再转换成明文,
它有一个协议,由于我现在刚转c/s不久 跟以前B/S有区别 不太会看这种协议
如下图:
16进制数据转换成2进制又转换成明文数据

这该怎么处理?
------解决思路----------------------
用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;
    }
}