主要问题是我从 SerialPort 接收到一个仅使用 10 位的二进制数,所以我用它来接收完整的数据:
byte[] buf = new byte[2];
serialPort.Read(buf, 0, buf.Length);
BitArray bits = new BitArray(buf);
将二进制转换为 int 的最初想法是:
foreach (bool b in bits)
{
if(b){
binary += "1";
}
else{
binary+= "0";
}
}
decimal = Convert.ToInt32(binary, 2);
decimal = decimal >> 6;
binary 显然是一个字符串,它可以工作,但我需要知道是否存在另一个解决方案,而不是我尝试使用的 previuos 代码:
decimal = BitConverter.ToInt16(buf, 0);
但这仅读取前 8 位,我需要缺少其他 2 位!如果我将 ToInt16 更改为 ToInt32
decimal = BitConverter.ToInt32(buf, 0);
程序因 System.ArgumentException 停止:目标数组不够长...
我能做些什么?