bytearray - 在 Dart 中处理字节数组时,使用 Uint8List 比使用 List<int> 有什么优势?

标签 bytearray dart

我正在编写一个 Dart 库,我经常在其中处理字节数组或字节字符串。由于 Dart 既没有字节类型也没有数组类型,我对所有字节数组都使用 List。

这是一个好的做法吗?我最近才发现 Uint8List 的存在在 dart:typed_data包裹。很明显,此类旨在通过字节数组的首选实现。

但它有任何直接的优势吗?

我可以想象它总是对新项目执行检查,以便用户可以确保列表中没有非字节值整数。但还有其他优势或差异吗?

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

最佳答案

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

但是,这个优势能否充分发挥,取决于 Dart 中 Uint8List 的实现有多好。

关于bytearray - 在 Dart 中处理字节数组时,使用 Uint8List 比使用 List<int> 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19897831/

相关文章:

flutter - Flutter 应用程序构建上的任务 ':sms:verifyReleaseResources' 和线程 "main"中的异常 java.lang.NullPointerException 执行失败

java - 从字节数组创建文件

Java 错误 : possible loss of precision

python - 'str' 不支持来自 Python2 的缓冲区接口(interface) Python3

android - android命令上的'flutter run'卡在: [Waiting for observatory port . ..]

android - 关于 flutter 你需要知道的事情

android - 升级到新版flutter时出现 “:app:transformClassesWithDexBuilderForDebug”错误

Dart:如何使用 mixins 解决菱形模式?

string - 在lua中将字符串转换为十六进制?

java - 将 Document 对象转换为 Byte[]