我想将服务中的浮点值发送到我的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;
...
我不是从服务中漂浮而是只是随机的标志。出了点问题,但我不知道是什么。我很少使用字节数组,因此我不太了解它。
答案 0 :(得分:1)
在服务中:
var DataToSend = Convert.ToString(rpm);
将服务中的数据作为字符串发送,然后将其转换回UI中的浮点数。
然后,您可以使用str.ToCharArray()
对于许多需要将少量数据转换为字符串并从字符串返回的服务,这是一种很好的做法。