HarmonyOS鸿蒙Next中rawfile数据转成js侧的arraybuffer

HarmonyOS鸿蒙Next中rawfile数据转成js侧的arraybuffer

long len = OH_ResourceManager_GetRawFileSize(rawFile);
std::unique_ptr<uint8_t[]> data = std::make_unique<uint8_t[]>(len);

// 将data转变成ts侧的arraybuffer类型
3 回复

解决方案如下:

napi_value CreateJsArrayValue(napi_env env, std::unique_ptr<uint8_t[]> &data, long length) {
  napi_value buffer;
  napi_status status = napi_create_external_arraybuffer(env, data.get(), length, nullptr, &buffer);
  if (status != napi_ok) {
    OH_LOG_Print(LOG_APP, LOG_ERROR, GLOBAL_RESMGR, tag, "Failed to create external array buffer");
    return nullptr;
  }
  napi_value result = nullptr;
  status = napi_create_typedarray(env, napi_uint8_array, length, buffer, 0, &result);
  if (status != napi_ok) {
    OH_LOG_Print(LOG_APP, LOG_ERROR, GLOBAL_RESMGR, tag, "Failed to create media typed array");
    return nullptr;
  }
  data.release();
  return result;
}

更多关于HarmonyOS鸿蒙Next中rawfile数据转成js侧的arraybuffer的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,将rawfile数据转换为js侧的ArrayBuffer可以通过ResourceManagerArrayBuffer的接口实现。首先,使用ResourceManager获取rawfile资源,然后将其转换为ArrayBuffer。具体步骤如下:

  1. 获取ResourceManager实例:通过getContext().getResourceManager()获取ResourceManager实例。
  2. 读取rawfile资源:使用ResourceManagergetRawFileContent方法读取rawfile资源,返回一个Uint8Array
  3. 转换为ArrayBuffer:通过Uint8Arraybuffer属性获取ArrayBuffer

示例代码如下:

// 获取ResourceManager实例
let resourceManager = getContext().getResourceManager();

// 读取rawfile资源
let rawFileContent = resourceManager.getRawFileContent('example.raw');

// 转换为ArrayBuffer
let arrayBuffer = rawFileContent.buffer;

在HarmonyOS鸿蒙Next中,将rawfile数据转换为JS侧的ArrayBuffer,可以通过ResourceManager读取rawfile资源,然后使用ArrayBuffer进行转换。以下是一个示例代码:

// 获取ResourceManager实例
const resourceManager = getContext().resourceManager;

// 读取rawfile资源
resourceManager.getRawFileContent('example.txt').then(rawFile => {
    // 将Uint8Array转换为ArrayBuffer
    const arrayBuffer = rawFile.buffer;
    console.log(arrayBuffer);
}).catch(error => {
    console.error('Error reading rawfile:', error);
});

这段代码首先通过ResourceManager读取rawfile资源,获取到Uint8Array类型的数据,然后将其转换为ArrayBuffer。你可以根据实际需求进一步处理ArrayBuffer

回到顶部