使用处理程序发送浮点值

Send float value using handler

我想将浮点值从服务发送到我的 UI(精度较低 - 只有两位数,如 1204,74)。现在我想把这个浮点数作为字符串,因为我只想显示它,但稍后我会用这个浮点数作为数字。

服务

...
int A = Integer.parseInt(listBytesAnsw.get(2), 16);
int B = Integer.parseInt(listBytesAnsw.get(3), 16);
float rpm = (A*255+B)/4;
msgBuffer = ByteBuffer.allocate(4).putFloat(rpm).array();
mHandler.obtainMessage(Constants.RPM, msgBuffer.length,-1, msgBuffer).sendToTarget();
addToQueue("01 0C");
...

UI

switch (msg.what) {
...
case Constants.RPM:
byte[] readRpmBuf = (byte[]) msg.obj;
String rpm = new String (readRpmBuf,0,msg.arg1);
mConversationArrayAdapter.add(mConnectedDeviceName + ": " + rpm);
break;
...

我没有从服务中获得浮动,只是随机迹象。出了点问题,但我不知道是什么。我很少使用字节数组,所以我不太了解它。

在服务中:

var DataToSend = Convert.ToString(rpm);

将服务中的数据作为字符串发送,然后在 UI 中将其转换回浮点数。

然后您可以使用 str.ToCharArray()

对于需要将少量数据与字符串相互转换的许多服务来说,这是一个很好的做法。