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
按赞同
/
按时间
jennyhan

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

分享
微博
QQ
微信
回复
2024-05-11 11:29:21
相关问题
Native如何通过napi获取ArrayBuffer
1423浏览 • 1回复 待解决
ArrayBuffer是否一定要传固定长度参数
209浏览 • 1回复 待解决
sqlite 的字段长度什么用?
988浏览 • 1回复 待解决
是否简洁易用的NAPI开发框架
832浏览 • 1回复 待解决
如何将ArrayBuffer转成string
131浏览 • 1回复 待解决
Uint8Array如何转成ArrayBuffer
119浏览 • 1回复 待解决
color使用color: 'rgba(0, 0, 255, .5)'不生效
480浏览 • 1回复 待解决
那种公共的标题返回的标题控件吗
134浏览 • 1回复 待解决
imageReceiver拿到的数据帧长度
136浏览 • 1回复 待解决
关于text内容删除的问题懂的吗?
1037浏览 • 1回复 待解决
OpenID和UnionID的长度限制要求
211浏览 • 1回复 待解决
Access Token和Refresh Token长度限制要求
209浏览 • 1回复 待解决