【HarmonyOS NEXT】示例代码-基础数据类型转化实例

简介

本示例介绍如何使用DevEco Studio创建一个Native C++应用,将ArkTS侧的数据(基础的数据类型)传递到Native侧进行处理并返回结果到ArkTS侧。 界面如下所示:

synchronized_operation

工程目录

解释├──conversion/src/main/cpp                    // C++ 代码区
│  ├──types
│  │  └──libconversion                        // C++接口导出
│  │     ├──index.d.ts                        
│  │     └──oh-package.josn5                 
│  ├──ArraybufferType.cpp                     // Arraybuffer类型转换
│  ├──ArraybufferType.h                       
│  ├──ArrayType.cpp                           // 数组类型转换
│  ├──ArrayType.h
│  ├──CMakeLists.txt                          // CMake配置文件
│  ├──DateType.txt                            // Date类型转换
│  ├──DateType.h
│  ├──hello.cpp                               // Native模块注册                             
│  ├──NumberType.cpp                          // number类型转换
│  ├──NumberType.h                          
│  ├──ObjectType.cpp                          // Object类型转换
│  ├──ObjectType.h                            
│  ├──StringBoolType.cpp                      // string,bool类型转换
│  └──StringBoolType.h                        
├──conversion/src/main/ets                    // ets 代码区
│  ├──common
│  │  ├──constants  
│  │  │  └──CommonConstants.ets               // 常量定义文件
│  │  └──utils
│  │     └──Logger.ets                        // 日志类
│  ├──conversionability
│  │  └──ConversionAbility.ets       
│  └──pages
│     ├──ArraybufferType.ets                  // Arraybuffer类型转换界面
│     ├──ArrayType.ets                        // 数组类型转换界面
│     ├──DateType.ets                         // Date类型转换页面
│     ├──Index.ets                            // 主页界面
│     ├──NumberType.ets                       // number类型转换界面
│     ├──ObjectType.ets                       // Object类型转换界面
│     ├──StringBoolType.ets                   // string,bool类型转换界面
│     └──Types.ts                             // object接口声明
└──entry/src/main/resources                   // 应用资源目录

相关概念

  • NAPI:NAPI提供的接口名与三方Node.js一致,目前支持部分接口。

  • NAPI中支持的标准库:目前支持标准C库、C++库、OpenSL ES、zlib。

相关权限

不涉及

使用说明

  1. 主页面:点击不同场景进入到不同类型的数据转化实例。

  2. 子页面:

    • 场景一:int类型加法(int类型数据)。主要通过napi_get_value_int32()函数与napi_create_int32()函数、分别获取int型数据和构造int型数据。

    • 场景二:string类型拼接(string类型数据和bool类型数据)。主要通过napi_get_value_string_utf8()、napi_get_value_bool()、以及napi_create_string_utf8()函数实现、与场景一用法类似。

    • 场景三:数组逆序(arr类型数据)。主要使用napi_get_array_length()、napi_create_array_with_length()、napi_get_element()和napi_set_element()函数。与场景一二的区别是先获取数组长度、然后构建相应长度的数组。针对数组的每一项元素值通过napi_get_element()获取、每一项元素赋值时使用napi_set_element()实现。

    • 场景四:arraybuffer求平方(arraybuffer类型数据)。主要使用napi_get_arraybuffer_info()、napi_create_external_arraybuffer()函数。区别在于napi_get_arraybuffer_info()获取的是底层缓冲区指针和指针长度。对于数据的修改需要利用reinterpret_cast将指针转化为uint型指针进行数据修改,修改后还需利用reinterpret_cast将指针转换回viod指针,该指针在napi_create_external_arraybuffer()构造新的arraybuffer时被引用。

    • 场景五:object对象赋值(object类型)。主要使用napi_create_object()、napi_set_named_property()函数、区别在于需要先构造出object对象、然后利用napi_set_named_property()函数对object对象的某个属性进行赋值操作。

    • 场景六:Date类型转换。主要使用napi_create_date()、napi_get_date_value()函数,创建、解析Date类型的对象。

更多详情参考:示例代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值