-3

我从速度传感器获取这些字节:

 byte[] array = new byte[2];

 array[0] = response.getDataPayload()[6]; 
 array[1] = response.getDataPayload()[7];

第一个是 MSB(最高有效字节),第二个是 LSB(次有效字节)。我知道这一点,因为这就是它在文档中所说的......

如何将这两个变量转换为 int/double?(在 C# 中)

4

2 回答 2

4

有一个名为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 位整数或双精度数。

字节被交换为字节顺序。

于 2015-04-27T20:20:04.297 回答
0

如果您需要将所有字节转换为正数,请尝试以下操作:

int value = array[1]*256 + array[0];
于 2015-04-27T20:18:45.127 回答