我从速度传感器获取这些字节:
byte[] array = new byte[2];
array[0] = response.getDataPayload()[6];
array[1] = response.getDataPayload()[7];
第一个是 MSB(最高有效字节),第二个是 LSB(次有效字节)。我知道这一点,因为这就是它在文档中所说的......
如何将这两个变量转换为 int/double?(在 C# 中)
有一个名为BitConverter的内置类可以做到这一点:
byte[] array = new byte[2];
array[0] = response.getDataPayload()[7];
array[1] = response.getDataPayload()[6];
//or, you could do:
array[0] = response.getDataPayload()[6];
array[1] = response.getDataPayLoad()[7];
Array.Reverse(array);
//end-or
short myVar = BitConverter.ToInt16(array, 0);
int myInt = (int)myVar;
double myDouble = (double)myVar;
因为 2 个字节是一个短的(16 位整数),这就是你从传感器中得到的。然后,您可以根据需要将其转换为完整的 32 位整数或双精度数。
字节被交换为字节顺序。
如果您需要将所有字节转换为正数,请尝试以下操作:
int value = array[1]*256 + array[0];