HarmonyOS 鸿蒙Next napi问题-如何将char dst转到byte array中去

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

HarmonyOS 鸿蒙Next napi问题-如何将char dst转到byte array中去

原来jni的写法 :

unsigned char* dst;
int lenreturn;
dst = encryptDES(str, &lenreturn, type);
jbyte* jb = (jbyte*)dst;
jbyteArray jarray = env->NewByteArray(lenreturn);
env->SetByteArrayRegion(jarray, 0, lenreturn, jb);

从而可以获取到jarray,在napi有相应的api吗?


更多关于HarmonyOS 鸿蒙Next napi问题-如何将char dst转到byte array中去的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

通过napi_create_arraybuffer创建,如下:

static napi_value TestArray(napi_env env, napi_callback_info info)
{
    napi_value result = nullptr;
    char * buf = nullptr;

    // 创建ArrayBuffer
    napi_create_arraybuffer(env, 100, (void**) &buf, &result);
    // 赋值ArrayBuffer
    for (int i = 0; i < 100; i++) {
        buf[i] = i + 2;
    }

    return result;
}

根据IR中描述,可以将dst赋值给buf即可。

在Artks中作访问,片段代码如下:

let arr = testNapi.testArray();
let int8Arr = new Int8Array(arr);
for (let index = 0; index < int8Arr.byteLength; index++) {
    hilog.info(0x0000, 'testTag', 'int8Arr[%d] = %d', index, int8Arr[index]);
}

Index.d.ts中定义接口:

export const testArray: () => ArrayBuffer;

另外,请参考(Node-API支持的数据类型和接口)说明: Node-API支持的数据类型和接口

更多关于HarmonyOS 鸿蒙Next napi问题-如何将char dst转到byte array中去的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,如果你需要将一个char类型的目标(dst)转换为byte array,你可以使用C++中的类型转换或者标准库函数来实现,但鉴于要求不涉及C和Java相关内容,这里提供一个基于C++风格的解答。

你可以直接将char数组视为byte数组,因为在C++中,char本质上就是一个字节。如果你有一个char数组或者char*指针,你可以将其强制类型转换为unsigned char*(或signed char*,取决于你的需求),这通常被视为byte array

示例代码如下:

#include <iostream>
#include <vector>

int main() {
    const char* dst = "example";
    std::vector<unsigned char> byteArray(dst, dst + strlen(dst) + 1); // +1 to include null terminator

    // 输出转换后的byte array
    for (unsigned char byte : byteArray) {
        std::cout << static_cast<int>(byte) << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述代码创建了一个char指针dst,指向一个字符串字面量,并将其内容(包括空终止符)复制到一个unsigned char类型的vector中,这可以被视为byte array

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部