微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dart 从文件中读取字节并转换为双精度

如何解决Dart 从文件中读取字节并转换为双精度

在 Dart/Flutter 中,我试图从数据文件中读取字节(每个值 2 个字节;在移动设备上)并转换为双精度。

我有以下代码

filetoData(File filename)  {
  var bytes = filename.readAsBytesSync();
  return bytes.buffer.asInt16List().map((e) {
    print("Value: ${e.todouble()}");
    return e.todouble();
  }).toList();
}

返回List值都是0.0;但是,在打印语句中,我看到 e.todouble() 不是 0.0,并且确实是预期的正确值。我似乎无法退货。

例如:

I/Flutter (10636): Value: 404.0
I/Flutter (10636): Value: 356.0
I/Flutter (10636): Value: 345.0
I/Flutter (10636): Value: 297.0
I/Flutter (10636): Value: 200.0
I/Flutter (10636): Value: 164.0

返回返回的List<double>为:

I/Flutter (10636): SIGNAL: [0.0,0.0,.....

有什么建议吗?谢谢。

解决方法

总是添加显式返回数据类型,不添加数据类型(AKA 动态)不能总是期望你想要的结果。

List<double> fileToData(File filename)  {
  var bytes = filename.readAsBytesSync();
  return bytes.buffer.asInt16List().map((e) {
    print("Value: ${e.toDouble()}");
    return e.toDouble();
  }).toList();
}

List<double> data = fileToData(file);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。