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);