Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Dart转换两个Uint8';1比16_Flutter_Dart_Type Conversion_Integer_Byte - Fatal编程技术网

Flutter Dart转换两个Uint8';1比16

Flutter Dart转换两个Uint8';1比16,flutter,dart,type-conversion,integer,byte,Flutter,Dart,Type Conversion,Integer,Byte,我正在构建一个应用程序,通过蓝牙从分光光度计读取数据。测量值以两个字节的形式发送,表示要转换为一个无符号16位整数。多亏了我用于蓝牙通信的库,这两个字节被转换成两个UINT8列表 我环顾四周,但没有找到任何解决办法。我在这里怎么做 我不在乎它是否漂亮。见鬼,如果你能提供一个使用黑魔法的解决方案,我会用它。它唯一要做的就是做好自己的工作,即使速度很慢。我只需要拿出三个Uint16,可接受的时间跨度约为1秒,因此即使是最低效的解决方案也可以在这里使用。您可以简单地使用二进制移位,这应该是非常高效的:

我正在构建一个应用程序,通过蓝牙从分光光度计读取数据。测量值以两个字节的形式发送,表示要转换为一个无符号16位整数。多亏了我用于蓝牙通信的库,这两个字节被转换成两个UINT8列表

我环顾四周,但没有找到任何解决办法。我在这里怎么做


我不在乎它是否漂亮。见鬼,如果你能提供一个使用黑魔法的解决方案,我会用它。它唯一要做的就是做好自己的工作,即使速度很慢。我只需要拿出三个Uint16,可接受的时间跨度约为1秒,因此即使是最低效的解决方案也可以在这里使用。

您可以简单地使用二进制移位,这应该是非常高效的:

(list[0] << 8) + list[1]

(列表[0]我采用了不同的方法:我只是将两个数字转换成一个RadixString,然后将它们相加(准确地说,我将一个数字附加到另一个数字上),然后使用int.parse将其恢复为int。我相信这不是最好的解决方案,但因为我只需要将六个数字合并为三个,这对现代智能手机处理器来说应该没有问题(见鬼,我打赌我的可靠的bricky TI-84+可以非常顺利地运行).Binary shift应转换为单进程操作。转换为字符串、串联和转换回实际上将转换为大量逻辑和内存操作。此外,此运算符正适合此类情况,因此我认为您的解决方案还需要更复杂、可读性更低的源代码。但如果您不介意的话n当然,它会工作的。干杯。所以我最近在对算法进行故障排除(结果是,与文档相比,高字节和低字节被翻转了),我只是用二进制移位重写了算法。当时,我不明白它做了什么(因为我没有读到它,因为我已经有了一个有效的解决方案),但读完后,我只是使用了它,而不是将其解析为二进制、连接等。我希望您现在很高兴;)
var list = new Uint8List(2);
list[0] = 1;
list[1] = 1;
print((list[0] << 8) + list[1]);