如何解决如何在android应用程序中将字节数组数据转换为浮点数据类型
我正在创建一个应用程序并且有数据传入 onCharacteristicChanged 函数。我得到的数据是字节[]。我需要能够采用数据类型并能够拥有通过蓝牙发送到应用程序的浮点数。
代码如下:
Devicedisplay.MaindisplayInfo.Density
我收到的值是:
@Override
public void onCharacteristicChanged(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic) {
super.onCharacteristicChanged(gatt,characteristic);
byte[] value = characteristic.getValue();
Log.i(TAG,"" + value);
}
字节数组长度为 2。
我尝试使用:
[B@37719f8
[B@16fced1
[B@444ed36
但我得到一个 BufferUnderflowException。
我也试过:
float foo = ByteBuffer.wrap(value).order(ByteOrder.LITTLE_ENDIAN).getFloat();
但我没有得到正确的值。
谁能帮帮我?我需要从字节数组转换为浮点值,字节 [] 值的长度为 2。我是 Android 应用程序的新手。谢谢
解决方法
我认为您应该检查 onCharacteristicsChanged 中的字节真正代表什么。
下面的代码会将你的字节数组打印成一些可读的十六进制字符串。
public static String byteToHexString(byte[] data) {
StringBuffer buf = new StringBuffer();
if (data != null) {
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9)) {
buf.append((char) ('0' + halfbyte));
} else {
buf.append((char) ('a' + (halfbyte - 10)));
}
halfbyte = data[i] & 0x0F;
} while (two_halfs++ < 1);
buf.append(' ');
}
}
return buf.toString();
}
我曾用自定义 ble 设备处理过一些项目,我一起工作的大多数(我认为可能是所有)程序员都使用 ascii 字节向我返回一些东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。