napi返回ArrayBuffer有长度但是内容都是0

调用 testEncodejiami 方法传入ArrayBuffer可以数据,打印时发现数据尾部后有乱码,之后napi_create_buffer返回数据(ArrayBuffer),接收到数据有长度内容全部为0。

index.d.ts: 
export const testEncodejiami : (buf : ArrayBuffer) => ArrayBuffer; 
hello.cpp: 
static napi_value testEncodejiami(napi_env env, napi_callback_info info) { 
  OH_LOG_ERROR(LOG_APP, “NFC_TEST::%{public}s”, “123123”); 
 
  size_t requireArgc = 2; 
  size_t argc = 2; 
  napi_value args[1] = {nullptr}; 
 
  napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); 
 
  napi_valuetype valuetype0; 
  napi_typeof(env, args[0], &valuetype0); 
 
  size_t length; 
  void *data; 
 
  napi_value buffer = args[0]; 
  napi_status status; 
 
  status = napi_get_buffer_info(env, args[0], &data, &length); 
  if (status != napi_ok) { 
    OH_LOG_ERROR(LOG_APP, "NFC_TEST::%{public}s", "获取buff失败"); 
    // 处理错误 
    return nullptr; 
  } 
  OH_LOG_ERROR(LOG_APP, "传入的数据长度 ::%{public}d", length); 
  OH_LOG_ERROR(LOG_APP, "传入的数据 ::%{public}s", data); 
 
  napi_value newBuffer; 
  status = napi_create_buffer(env, length,&data, &newBuffer); 
  if (status != napi_ok) { 
    OH_LOG_ERROR(LOG_APP, "NFC_TEST::%{public}s", "  处理错误"); 
    // 处理错误 
    return nullptr; 
  } 
  OH_LOG_ERROR(LOG_APP, "返回的数据 ::%{public}s", newBuffer); 
  // 返回 Buffer 对象 
  return newBuffer; 
} 
ets: 
  let jsonStr = “{“mobilePhone”:”" + user + “”,“passwd”:"" + password + “”}" 
  let buf = buffer.alloc(jsonStr.length,jsonStr,“utf-8”) 
  let handelData : ArrayBuffer = textNapi.testEncodejiami(buf.buffer) 
  if (handelData !== null) { 
    let resultBuff = buffer.from(handelData,0,handelData.byteLength); 
    console.log("处理后的数据 : " + resultBuff.toString(‘hex’)); 
  }else { 
    console.log("buff返回null : ") 
  }
HarmonyOS
2024-05-10 22:33:40
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
放大电路

将buffer传递到native,需要 使用 typedarray 做处理。

分享
微博
QQ
微信
回复
2024-05-11 11:29:21
相关问题
获取窗口内容规避的区域值全部都是0
1814浏览 • 1回复 待解决
HarmonyOS 获取的oaid都是0
751浏览 • 1回复 待解决
Native如何通过napi获取ArrayBuffer
3459浏览 • 1回复 待解决
ArrayBuffer是否一定要传固定长度参数
1838浏览 • 1回复 待解决
HarmonyOS如何测量文本内容长度
14浏览 • 0回复 待解决
sqlite 的字段长度什么用?
2383浏览 • 1回复 待解决
是否简洁易用的NAPI开发框架
2296浏览 • 1回复 待解决
getAcceptType返回类型问题
94浏览 • 1回复 待解决
在 string 转成ArrayBuffer报错
895浏览 • 1回复 待解决