Types 在Dart中连接字节

Types 在Dart中连接字节,types,dart,binaryfiles,Types,Dart,Binaryfiles,假设我有一个字节大小的整数列表。前4个字节(列表中的前4项)实际上是单精度浮点数的组成部分。我想连接4个字节,并将它们转换为浮点。我该怎么做 File myFile=新文件('binaryfile.bin') List fileBytes=myFile.readAsBytes() double myFloat=generateFloat(fileBytes.getRange(0,4));//我怎么做这个? 使用 引用ByteData的描述: 一种固定长度的随机存取字节序列,它还提供对由这些字节表

假设我有一个字节大小的整数列表。前4个字节(列表中的前4项)实际上是单精度浮点数的组成部分。我想连接4个字节,并将它们转换为浮点。我该怎么做

File myFile=新文件('binaryfile.bin')
List fileBytes=myFile.readAsBytes()
double myFloat=generateFloat(fileBytes.getRange(0,4));//我怎么做这个?
使用

引用ByteData的描述:

一种固定长度的随机存取字节序列,它还提供对由这些字节表示的固定宽度整数和浮点数的随机和未对齐存取。ByteData可用于打包和解包来自外部源(如网络或文件系统)的数据

继续你的例子

导入“dart:io”
导入“dart:键入的_数据”;
...
File myFile=新文件('binaryfile.bin')
List fileBytes=myFile.readAsBytesSync();
//将整数列表转换为字节缓冲区
ByteBuffer buffer=new Int8List.fromList(fileBytes).buffer;
//围绕缓冲区包装ByteData对象
ByteData ByteData=新的ByteData.view(缓冲区);
//以浮点形式读取缓冲区的前4个字节
double x=byteData.getFloat32(0);
但是,请注意您的数据的重要性


其他人可能会指出将数据从文件中获取到
ByteBuffer

的更好方法,我想应该是Uint8List而不是Int8List?另外,优化-readAsBytes()实际上已经返回了一个UInt8列表。因此可以防止复制—例如:ByteBuffer buffer=fileBytes是Uint8List?fileBytes.buffer:新的Uint8List(fileBytes.buffer);