HarmonyOS 鸿蒙Next 如何将native侧unsigned char 数组,传到ArkTs侧

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何将native侧unsigned char 数组,传到ArkTs侧

我的unsigned char数组size32
通过napi_create_string_utf8(env, data, len, &result)传到ArkTsstring str

发现strlength可能会是16,17或者18

而在native侧通过
```python
napi_get_value_string_utf8读取这个str,发现读取出来的str_len可能是32,33,34。。
有大佬来解释一下吗?

Index.ets

index.d.ts

hello.cpp

输出


更多关于HarmonyOS 鸿蒙Next 如何将native侧unsigned char 数组,传到ArkTs侧的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

rand()会返回一个从0到最大随机数的任意整数,有些会超出char存储的大小范围,可以使用rand()%128,这样就不会出现上述问题了。

更多关于HarmonyOS 鸿蒙Next 如何将native侧unsigned char 数组,传到ArkTs侧的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


请问这个问题后来有解了吗,我现在碰到了相同的问题,跟这个场景一致,加解密函数的调用

把运算结果 做Base64编码,然后再放入UTF-8字符串中返回。

开发者您好,该问题已反馈至相关人员,请耐心等待。

在HarmonyOS鸿蒙Next中,将native侧的unsigned char数组传递到ArkTS侧,可以通过以下步骤实现:

  1. Native侧定义接口:在Native侧定义一个接口,使用napi_valuenapi_env来处理数据传递。例如:

    napi_value GetUnsignedCharArray(napi_env env, napi_callback_info info) {
        unsigned char data[] = {0x01, 0x02, 0x03, 0x04};
        size_t length = sizeof(data) / sizeof(data[0]);
    
        napi_value array;
        napi_create_array_with_length(env, length, &array);
    
        for (size_t i = 0; i < length; i++) {
            napi_value element;
            napi_create_uint32(env, data[i], &element);
            napi_set_element(env, array, i, element);
        }
    
        return array;
    }
  2. 注册Native模块:在Native侧注册该接口,使其可以在ArkTS侧调用。例如:

    napi_value Init(napi_env env, napi_value exports) {
        napi_property_descriptor desc = {"getUnsignedCharArray", 0, GetUnsignedCharArray, 0, 0, 0, napi_default, 0};
        napi_define_properties(env, exports, 1, &desc);
        return exports;
    }
    
    NAPI_MODULE(NativeModule, Init)
  3. ArkTS侧调用:在ArkTS侧通过import引入Native模块,并调用该接口获取unsigned char数组。例如:

    import nativeModule from 'libNativeModule.so';
    
    let unsignedCharArray = nativeModule.getUnsignedCharArray();
    console.log(unsignedCharArray); // 输出: [1, 2, 3, 4]

通过以上步骤,可以将Native侧的unsigned char数组传递到ArkTS侧。

在HarmonyOS鸿蒙Next中,将native侧的unsigned char数组传递到ArkTS侧可以通过以下步骤实现:

  1. Native侧:在Native代码中,将unsigned char数组转换为napi_value类型。可以使用napi_create_arraybuffernapi_create_typedarray函数来创建ArrayBuffer或TypedArray。

  2. ArkTS侧:在ArkTS中,接收Native传递的ArrayBuffer或TypedArray,并根据需要使用DataViewTypedArray进行操作。

例如,Native代码:

napi_value arrayBuffer;
napi_create_arraybuffer(env, size, (void**)&data, &arrayBuffer);

ArkTS代码:

let buffer: ArrayBuffer = ...; // 接收到的ArrayBuffer
let view = new Uint8Array(buffer); // 转换为Uint8Array进行操作

通过这种方式,可以在Native和ArkTS之间高效传递二进制数据。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!