16进制数据转换成2进制又转换成明文数据
16进制数据转换成2进制再转换成明文数据
从雷达获取了一段数据,这个数据包含一些信息.
显示的时候为了方便查看 界面是显示成
这是一串16进制的数据,
我想将它转成2进制 再转换成明文,
它有一个协议,由于我现在刚转c/s不久 跟以前B/S有区别 不太会看这种协议
如下图:

这该怎么处理?
------解决思路----------------------
用BitArray来做,代码可以比较清晰:
从雷达获取了一段数据,这个数据包含一些信息.
显示的时候为了方便查看 界面是显示成
00.0C.F5.81.4B.90.07.A0
这是一串16进制的数据,
我想将它转成2进制 再转换成明文,
它有一个协议,由于我现在刚转c/s不久 跟以前B/S有区别 不太会看这种协议
如下图:
这该怎么处理?
------解决思路----------------------
用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;
}
}