[英]An efficient way to convert ByteData in Dart to unsigned char* in C++?
我是这样做的:
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;
}
在 JNI 中有没有像JNIEnv::GetByteArrayRegion这样更有效的方法?
非常感谢!
这总是会涉及一个副本,所以有什么比你的 for 循环更有效的吗? 也许。
分配Uint8Pointer
使用asTypedList
将其转换为Uint8List
。 现在您可以访问其复制原语,如setAll
和setRange
以从源复制到目标。
ByteData
的原始来源是ByteData
? 如果你事先知道大小,你能不能先分配Uint8Pointer,转换成类型数据,然后直接读进去?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.