nva*_*ano 3 bluetooth ieee-754 dart
我从蓝牙控制器中获得了蓝牙特性,并将颤动蓝色作为列表。此特性包含蓝牙秤的重量测量。是否有将这个整数列表转换为双精度的函数?
我试图通过阅读 IEEE 754 标准来寻找有关浮点表示的一些背景知识。有 dart 库 typed_data 但我是 dart 的新手并且没有使用这个库的经验。
例子:
我有这个 List: [191, 100, 29, 173] 它来自蓝牙控制器,作为浮点值的 IEEE754 表示。现在我相信我必须将每个 int 转换为十六进制并连接这些值:bf 64 1d ad
接下来需要做的是将其转换为双精度,但我找不到将十六进制转换为双精度的函数。只有int.parse("0xbf641dad")。
我猜您的意思是将整数列表转换为浮点数列表,而不是单个浮点数,对吗?首先,dart 没有名为float. 相反,它有类型double。要转换它,您可以使用以下map()函数:
var listInt = [1, 2, 3];
var listDouble = list.map((i) => i.toDouble()).toList();
Run Code Online (Sandbox Code Playgroud)
有同样的问题。
我想你的意思是如何将四个字节变成 float32 ?我需要做同样的事情。
你会想做这样的事情:
首先将List值作为字节缓冲区,然后取出字节数据,然后就可以使用getFloat32函数了。
ByteBuffer buffer = new Int8List.fromList(value_in).buffer;
ByteData byteData = new ByteData.view(buffer);
result = byteData.getFloat32(0);
Run Code Online (Sandbox Code Playgroud)
请注意,由于约定不同,来自蓝牙的字节顺序可能是从后到前的。
您还需要 typed_data 库:
import 'dart:typed_data'; //for data formatting
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试朝另一个方向走。。。原因显而易见。
| 归档时间: |
|
| 查看次数: |
2654 次 |
| 最近记录: |