gpt4 book ai didi

c++ - 将 Dart 中的 ByteData 转换为 C++ 中的 unsigned char* 的有效方法?

转载 作者:行者123 更新时间:2023-12-02 10:37:54 56 4
gpt4 key购买 nike

我是这样做的:

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;
}

有没有像JNIEnv::GetByteArrayRegion这样更有效的方法在 JNI 中?

非常感谢!

最佳答案

这总是会涉及到一个拷贝,那么有没有比你的 for 循环更有效的东西呢?也许吧。

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

ByteData 的原始来源是什么?如果事先知道大小,是否可以先分配 Uint8Pointer,转换为类型化数据,然后直接读入?

关于c++ - 将 Dart 中的 ByteData 转换为 C++ 中的 unsigned char* 的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59422546/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com