从4个字节中恢复浮点变量

时间:2016-10-31 00:49:01

标签: c# floating-point byte

我想将我的蓝牙设备的浮动值传输到ma android app。 蓝牙中的所有数据都通过字节传输。所以浮点值应该分为4个字节。

enter image description here

问题是我不知道如何在我的Android应用程序代码中将这4个字节恢复为浮点值。

例如,浮点值等于29.2,它等价于二进制= 41 E9 C4 F3。

所以byte [0] = 0xF3; byte 1 = 0xC4; byte [2] = 0xE9; byte [3] = 0x41;

这是我在我的Android应用程序代码中所做的,以便恢复浮动值:

float value;
value = ((byte[0]) | (byte[1] << 8) | (byte[2] << 16) | (byte[3] << 24));

我也尝试了演员,但它不起作用。

float value;
value = (float)((byte[0]) | (byte[1] << 8) | (byte[2] << 16) | (byte[3] << 24));

实际上,当我这样做时,应用程序将其读取为32位整数。它以十进制显示值1105839347,相当于十六进制到41E9C4F3。

但实际上我想重构每个字节的浮点值字节。

我该怎么做?

FI :我使用C#/ xamarin编码我的Android应用

此致

1 个答案:

答案 0 :(得分:2)

您可以使用'mars'

BitConverter

演示:https://dotnetfiddle.net/jIRK3h

您可以阅读var f = BitConverter.ToSingle(byteArray, 0); 文档here