c#组合字节数组并转换为16位整数

时间:2012-07-05 22:27:42

标签: c# bytearray

假设我有一个像这样定义的字节数组:

byte[] byteArray = { 0x08, 0x00 };

我需要组合数组中的元素来创建:

0x0800

然后将其转换为int:

2048

这样的事情:

    private static int GetMessageType(byte[] byteArray)
    {
        if(byteArray.Length != 2)
            throw new ArgumentOutOfRangeException("byteArray");

        throw new NotImplementedException();
    }

2 个答案:

答案 0 :(得分:4)

为什么不使用简单的按位运算符? e.g。

byte hiByte = byteArray[0];  // or as appropriate
byte lowByte = byteArray[1];
short val = (short)((hiByte << 8) | lowByte);

在这种情况下,按位结果被视为[signed] short(在标题后面?)并且可能导致负值,但可以根据需要通过删除转换来改变.. < / p>

答案 1 :(得分:1)

您应该使用BitConverter.ToInt16,除非您想要进行BigEndian转换。因此,请使用Jon Skeet的EndianBitConverterhttp://www.yoda.arachsys.com/csharp/miscutil/