我想将我的蓝牙设备的浮动值传输到ma android app。 蓝牙中的所有数据都通过字节传输。所以浮点值应该分为4个字节。
问题是我不知道如何在我的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应用
此致
答案 0 :(得分:2)
您可以使用'mars'
类
BitConverter
演示:https://dotnetfiddle.net/jIRK3h
您可以阅读var f = BitConverter.ToSingle(byteArray, 0);
文档here。