我正在编写一个DART库,在其中我非常定期地处理字节数组或字节字符串.由于DART既没有字节类型也没有数组类型,所以我对所有字节数组都使用LIST.

这是一个很好的做法吗?我最近才发现dart:typed_data个套餐中有Uint8List个.很明显,这个类的目标是通过字节数组的首选实现.

但是它有没有什么直接的优势呢?

我可以想象它总是对新项目执行判断,这样用户就可以确保列表中没有非字节值整数.但是有没有其他的优势或不同之处呢?

还有一个名为ByteArray的类,但对于List来说,它似乎是一个效率很低的替代方案...

推荐答案

优点应该是Uint8List比普通列表消耗更少的内存,因为从一开始就知道每个元素的大小都是一个字节. Uint8List也可以直接映射到底层优化的Uint8List类型(例如,在Javascript中). 列表切片的副本也更容易执行,因为所有字节都是在内存中布局的上下文,因此可以在单个操作中将切片直接复制到另一个Uint8List(或等效的)类型.

然而,这一优势是否得到充分利用取决于Uint8List在DART中的实现有多好.

Dart相关问答推荐

如何映射作为DART中其他模型基础的复杂模型

有没有办法否定IF条件中的模式大小写匹配?

Dart 中的const关键字放置有什么不同?

日期时间时区反序列化

FlutterError (setState() 在 dispose() 之后调用:(生命周期状态:defunct,not mounted)

flutter pub run build_runner 卡住了

如何将圆形边框设置为flutter上的MaterialButton?

Flutter 如何移动文件

使用brave浏览器调试flutter web app

如何 Select 性地传递可选参数?

在 Flutter 中推送新页面时,Navigator 堆栈上的页面会重建

如何在 Dart 中监听自定义事件?

Flutter/Dart Uri 没有在 URL 中转义冒号:

在 Flutter 的 TextFormField 中管理事件

如何突出显示所选卡片的边框?

Visual Studio 的 Dart 插件

Dart 中 Promise.all 的类比?

如何在 Dart 中将 UTF-8 字符串转换为字节数组?

Dart 的Expando功能是什么,它有什么作用?

了解工厂构造函数代码示例