You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:42:40