0

Dart 的ByteBuffer和是 Javascript 的和ByteData的非常直接的副本(但名称令人困惑!)ArrayBufferDataView

然而,似乎没有一个等价于ArrayBuffer.slice(),它创建一个的一部分的副本ArrayBuffer。我错过了吗?这是故意的还是只是疏忽?

4

1 回答 1

2

您可以复制 a 的一部分ByteBuffer,尽管该过程可能有点复杂:

您可以使用来Uint8List.view创建. 从那里你可以使用它的方法将它的一部分复制到一个新的,然后访问它的属性来取回一个。Uint8ListByteBuffersublistUint8ListbufferByteBuffer

换句话说:

ByteBuffer slice = Uint8List.view(byteBuffer).sublist(start, end).buffer;

从 a获取Uint8List视图ByteBuffer然后创建副本的另一种方法:

ByteBuffer slice = Uint8List.fromList(byteBuffer.asUint8List(start, end)).buffer;

在实践中,我认为这通常并不像看起来那么糟糕,因为通常你会从Uint8List无论如何开始。

于 2020-06-29T23:37:36.800 回答