一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?

An efficient way to convert ByteData in Dart to unsigned char* in C++?

本文关键字:C++ 无符号 字符 方法 有效 转换 字节数 一种 字节 Dart 数据      更新时间:2023-10-16

我是这样做的:

Pointer<Uint8> _byteDataToPointer(ByteData byteData) {
final uint8List = byteData.buffer.asUint8List();
final length = uint8List.lengthInBytes;
final result = allocate<Uint8>(count: length);
for (var i = 0; i < length; ++i) {
result[i] = uint8List[i];
}
return result;
}

有没有更有效的方法像JNInv::GetByteArrayRegion在JNI中?

谢谢!

这总是会涉及副本,那么有没有比你的 for 循环更有效的东西呢?或。

分配Uint8Pointer后,使用asTypedList将其转换为Uint8List。现在,您可以访问其复制原语,例如setAllsetRange从源复制到目标。

ByteData的原始来源是什么?如果你事先知道大小,你能不能先分配Uint8Pointer ,转换为类型化数据,然后直接读取它?