为什么我不能't字节[2]数组转换成int与BitConverter

本文关键字:转换 数组 int BitConverter 不能 字节 为什么 | 更新日期: 2023-09-27 18:06:05

主要问题是我从SerialPort收到一个只有10位的二进制数,所以我用它来接收完整的数据:

byte[] buf = new byte[2];
serialPort.Read(buf, 0, buf.Length);
BitArray bits = new BitArray(buf);

将二进制转换为整型的最初想法是:

foreach (bool b in bits)
{
    if(b){
        binary += "1";
    }
    else{
        binary+= "0";
    }
}
decimal = Convert.ToInt32(binary, 2); 
decimal = decimal >> 6;

二进制显然是一个字符串,这是有效的,但我需要知道是否存在另一个解决方案,而不是前面的代码,我尝试这个:

decimal = BitConverter.ToInt16(buf, 0);

但这只读取前8位,我需要其他2位丢失!如果我将ToInt16更改为ToInt32

decimal = BitConverter.ToInt32(buf, 0);

程序因系统而停止。

我能做什么?

为什么我不能't字节[2]数组转换成int与BitConverter

您可以移动字节中的值,使它们匹配,并将它们放在一起。如果我用对了位,那就是:

int value = (buf[0] << 2) | (buf[1] >> 6);