从串口读到一组byte[]数据包,现要将每两个8位的byte组合成一个16位的int,请问C#如何实现

解决方案 »

  1.   

    //byte[] buf
    //startIndex 起始位置
    Array.Reverse(buf); //字节序反转
    Int16 i = BitConverter.ToInt16(buf, startIndex);
      

  2.   

    楼上的说的只是一种情况。
    这要看你的机器了!
    一般来讲,计算机存在低位优先和高位有先两种。你的分情况:
    1、低位优先:0x1234在内存中表示为,第一字节34,第二字节12。
    2、高位优先:0x1234在内存中表示为,第一字节12,第二字节34。
    这与机器硬件有关。
    另外,你读出的两个字节,哪个是高位哪个是低位呢?
    你可以使用乘法和加法来避免这个问题。
    int16=256*高位+低位。
      

  3.   

         试过了,楼上是对的
                  byte[] bt=new byte[6]{0x11,0x28,0x02,0xF3,0x1E,0x17};
                Int16[] it = new Int16[3];
                int i = 0;
                while( i < 6 )
                {
                    Int16  temp = Convert.ToInt16(bt[i] * 256 + bt[i+1]);
                    it[i / 2] = temp;
                    i += 2;
                }
                return it;