如何使用map函数将ByteData转换为List<int>(无需循环)
无需循环将ByteData转换为List的方法
直接借助Dart的Uint16List.view()创建内存视图即可,完全不用手动写循环,且效率远高于循环实现:
// 假设你的ByteData实例为byteBuffer Uint16List uint16List = Uint16List.view( byteBuffer.buffer, byteBuffer.offsetInBytes, byteBuffer.lengthInBytes ~/ 2, // 500字节对应250个Uint16元素 ); // 若需要标准List<int>,直接转换即可(注:Uint16List本身已是List<int>子类,多数场景无需额外转换) List<int> intList = uint16List.toList();
该方案的优势:
- 底层直接操作内存视图,而非逐个元素拷贝,性能远超手动循环
- Uint16List本身实现了
List<int>接口,大部分业务场景下可直接使用,无需额外转换步骤 - 代码简洁直观,符合你想要的类似map的声明式写法
如果后续需要将其转换为List<double>,直接在生成的Uint16List上调用map即可:
List<double> doubleList = uint16List.map((value) => value.toDouble()).toList();
内容的提问来源于stack exchange,提问作者kdesroch1
相关产品推荐
相关产品推荐

