Dart的ByteBuffer和ByteData分别是Javascript的ArrayBuffer和DataView的非常直接的副本(但是有更令人困惑的名字!)
然而,似乎没有与ArrayBuffer.slice()相当的东西,它创建了一个ArrayBuffer部分的副本。我错过了吗?这是故意的还是仅仅是疏忽?
发布于 2020-06-29 23:37:36
您可以复制ByteBuffer的一部分,尽管这个过程可能有点复杂:
您可以使用Uint8List.view创建ByteBuffer的Uint8List视图(即,而不是副本)。从这里,您可以使用它的sublist方法将其一部分复制到新的Uint8List中,然后访问它的buffer属性以获得一个ByteBuffer。
换言之:
ByteBuffer slice = Uint8List.view(byteBuffer).sublist(start, end).buffer;从Uint8List中获取ByteBuffer视图的另一种方法,然后创建副本:
ByteBuffer slice = Uint8List.fromList(byteBuffer.asUint8List(start, end)).buffer;在实践中,我认为这通常并不像看起来的那么糟糕,因为通常您都会从Uint8List开始。
https://stackoverflow.com/questions/62646339
复制相似问题