请解释napi_get_value_int64接口的功能及使用时的注意事项?

阅读 611
1 个回答

功能是将ArkTS值转换为Node - API模块中的int64类型数据。使用时,先解析传入的值,然后调用该接口进行转换,若传递的参数不是数字则返回napi_number_expected。注意输入超过int64表示范围的数字会溢出失去精度,导致输入数字与返回数字不相等;传入NAN+Infinity-Infinity时接口返回数字0。示例代码如下:

#include "napi/native_api.h"

static napi_value GetValueInt64(napi_env env, napi_callback_info info) {
    size_t argc = 1;
    napi_value args[1] = {nullptr};
    int64_t result64 = 0;
    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
    napi_status status = napi_get_value_int64(env, args[0], &result64);
    if (status == napi_number_expected) {
        return nullptr;
    }
    napi_value napiResult64 = nullptr;
    napi_create_int64(env, result64, &napiResult64);
    return napiResult64;
}

ArkTS侧传入不同值进行测试,如testNapi.getValueInt64(80)(输入范围内数字)、testNapi.getValueInt64('sAs')(输入非数字)、testNapi.getValueInt64(9223372036854775809)(输入超出范围数字)等,并通过日志输出结果。

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题