16进制数据转换成2进制再转换成明文数据 数据界面16进制2进制协议图 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不用转二进制,直接byte数组转string不就可以了吗string str = System.Text.Encoding.Default.GetString (byteArray); 额?先用byte接收 然后转换成字符串?您看那个图中的协议没? 如果接收到的就是byte数组,那就是二进制,直接转成你要的信息如果接收到的是字符串,那就先逐个的解析放到byte数组中,在转换 用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; }} 求正则表达式,正则表达式大人乱进! 在窗体中,如何实现传值。 怎样用鼠标滚轮控制listbox 高分求数据库下载的进度条. 有winform的form1里的text1和text2, 如何绑定它们,才能将text1.text存到表aaa的1行1列,text2.text存到表aaa的2行1列,它俩是同一字段的 哪位可以给解释一下StringComparison这个枚举 求往IE中嵌入工具条的源代码。 关于用友U8的库存更新问题?有高手做过吗? 帮帮我 线程释放 请教大神,关于C#动态加载Dll,怎么实现异步返回的问题 C# winform程序怎么重命名
如果接收到的是字符串,那就先逐个的解析放到byte数组中,在转换
{
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;
}
}