需要在dart
中实现以下
MemoryStream stream = new MemoryStream(288);
stream.WriteByte((byte) 13);
stream.WriteByte((byte) 12);
stream.WriteByte((byte) 10);
stream.WriteByte((byte) 8);
stream.WriteByte((byte) 6);
stream.WriteByte((byte) 9);
var result = stream.ToArray();
我来自C#/ java背景,尝试使用
Uint8List
,它等效于byte[]
,并且比List<int>
更有效。虽然我可以在add
中使用int8
Uint8List
,但只能用固定长度初始化Uint8List
。我需要动态的东西,我可以只说write
或add
而无需添加任何索引。不知道add()
的Uint8List
如何工作。在互联网或文档中找不到太多内容。 最佳答案
我认为没有标准的等效项。 (有a GitHub comment explaining why Uint8List
requires a fixed length。)
相反,您可以:
List<int>
并随后转换为Uint8List
。 Uint8List
的类。当需要额外的容量时,您将需要分配一个新的Uint8List
(例如,其大小是先前大小的两倍),并复制旧元素。 (这是大多数其他可增长列表实现(例如C++的std::vector
)所做的事情。)可能在pub.dev上已有一些现有的Dart软件包已经在执行此操作。 List<Uint8List>
的类,根据需要添加新的Uint8List
成员,并在完成后将它们串联为一个Uint8List
。有一个第三方 buffer
package可以做到这一点,但是我从来没有亲自使用过它,也不能担保它。 关于flutter - Dart-Dart的C#Stream/MemoryStream和stream.WriteByte(..)等效什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58160348/