HarmonyOS NAPI,如果从ArkTS侧传入Uint8Array,请问Native该怎么接收这个数组?

HarmonyOS NAPI,如果从ArkTS侧传入Uint8Array,请问Native该怎么接收这个数组?

HarmonyOS
2024-11-25 11:37:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

请参考以下代码:

napi_typedarray_type arr_type; 
napi_value arr_buffer; 
size_t arr_offset; 
size_t arr_i, arr_length; 
// 获取传入数组的长度和类型 
napi_status status = napi_get_typedarray_info(env, arr, &arr_type, &arr_length, NULL, &arr_buffer, &arr_offset); 
LOGI("-------arr--%{public}d-------", arr_length); 
void *data; 
size_t byte_len; 
napi_create_array_with_length(env, arr_length, &arr_buffer); 
napi_get_arraybuffer_info(env, arr_buffer, &data, &byte_len); 
napi_value output_buffer; 
void *output_ptr = NULL; 
napi_create_arraybuffer(env, byte_len, &output_ptr, &output_buffer); 
napi_value out_arr; 
napi_create_typedarray(env, arr_type, arr_length, output_buffer, arr_offset, &out_arr); 
if (arr_type == napi_uint8_array) { 
  uint8_t *input_bytes = (uint8_t *)(data) + arr_offset; 
  uint8_t *output_bytes = (uint8_t *)(output_ptr); 
  for (arr_i = 0; arr_i < arr_length; arr_i++) { 
    OH_LOG_INFO(LOG_APP, "Multiply_for_arraybuffer input_bytes %{public}d", input_bytes[arr_i]); 
    output_bytes[arr_i] = (uint8_t)(input_bytes[arr_i] * 1); 
    LOGI("最终结果,============%{public}zi", output_bytes[arr_i]); 
  } 
}
分享
微博
QQ
微信
回复
2024-11-25 15:10:41
相关问题
ArrayBuffer怎么Uint8Array
559浏览 • 1回复 待解决
HarmonyOS string怎么Uint8Array互转?
352浏览 • 1回复 待解决
HarmonyOS Uint8Array怎么正确转ArrayBuffer
1415浏览 • 1回复 待解决
Uint8Arraynative层去解析提示过期
608浏览 • 1回复 待解决
Uint8Array如何转成ArrayBuffer
1573浏览 • 1回复 待解决
Uint8Array是@Sendable类吗?
246浏览 • 1回复 待解决
Uint8Array 如何直接转为String or Json
2690浏览 • 1回复 待解决
如何将Uint8Array转ArrayBuffer?
504浏览 • 1回复 待解决
如何将Uint8Array转字符串?
566浏览 • 1回复 待解决
如何将字符串转为Uint8Array
771浏览 • 1回复 待解决
HarmonyOS Uint8Array格式转字符串的方法
815浏览 • 1回复 待解决
Uint8Array和string之间的相互转换
3015浏览 • 1回复 待解决
arktshashmap转为native
954浏览 • 1回复 待解决