假设我有一个像这样定义的字节数组:
byte[] byteArray = { 0x08, 0x00 };
我需要组合数组中的元素来创建:
0x0800
然后将其转换为int:
2048
这样的事情:
private static int GetMessageType(byte[] byteArray)
{
if(byteArray.Length != 2)
throw new ArgumentOutOfRangeException("byteArray");
throw new NotImplementedException();
}
答案 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的EndianBitConverter
:http://www.yoda.arachsys.com/csharp/miscutil/