一文了解HarmonyOS Next ArkTS与C++数据类型转换

鸿蒙HarmonyOS应用开发之C/C++标准库机制概述 OpenHarmony NDK提供业界标准库 libc标准库、 C++标准库 ,本文用于介绍C/C++标准库在OpenHarmony中的机制,开发者了解这些机制有助于在NDK开发过程中避免相关问题。 阅读详情

往期知识点整理

背景

HarmonyOS的主力开发语言是ArkTS,也提供了C++语言的支持,对于一些能力,比如音视频编解码等,HarmonyOS 提供的也只有C++ API,对于一些其他平台现有能力的迁移,C++也是最快捷高效的,所以对于一个HarmonyOS 开发者,掌握ArkTS与C++交互成了一项必备技能。

每种编程语言都有自己定义的数据类型,不同编程语言之间互相调用就涉及到了数据类型的转换,ArkTS与C++的转换主要有Node-API接口提供,本文介绍ArkTS与C++互相转换的接口和最佳实践。

做过Android JNI开发的小伙伴对Java和C++的互相调用有所了解,JNI提供了Java和C++的类型转换,与JNI不同的是NAPI中,TS调用C++的参数都封装到了一起:

static napi_value add(napi_env env, napi_callback_info info)  
{
}

不管要传递多少个参数,都封装在napi_callback_info中,可以从napi_callback_info中获取全部参数信息:

size_t argc = 7;//参数个数
napi_value args[7] = {nullptr};
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

接下来就可以从args中分别读取ArkTS传来的参数信息,下面介绍如何进行类型转换。

ArkTS转C++类型

TS基本数据类型:

  • 数字类型 number
  • 字符串类型 string
  • 布尔类型 boolean
  • 任意精度整形 bigint
  • 对象类型 object C++基本数据类型:
  • 整形
    • int
    • short
    • long
    • long long
  • 浮点型
    • float
    • double
    • long double
  • 字符型 char
  • 布尔型 bool

基本数据类型转换

NAPI提供了上面两种语言对应的类型的转换:

  • 转换为布尔类型:napi_get_value_bool
  • 转换为int32:napi_get_value_int32
  • 转换为int64:napi_get_value_int64
  • 转换为无符号32位:napi_get_value_uint32
  • 转换为double:napi_get_value_double
  • bit
OpenHarmony 鸿蒙OS C++编程规范 https://gitee.com/openharmony/docs/blob/master/contribute/OpenHarmony-cpp-coding-style-guide.md C++语言编程规范 目的 规则并不是完美的,通过禁止在特定情况下有用的特性,可能会对代码实现造成影响。但是我们制定规则的目的“为了大多数程序员可以得到更多的好处”, 如果在团队运作中认为某个规则无法遵循,希望可以共同改进该规则。  参考该规范之前,希望您具有相应的C++语言基础能力,而不是通过该文档来学习C+ 阅读详情

相关推荐

【鸿蒙实战开发】—— C/C++标准库机制

HarmonyOS NDK提供业界标准库 libc标准库 、 C++标准库,本文用于介绍C/C++标准库在HarmonyOS中的机制,开发者了解这些机制有助于在NDK开发过程中避免相关问题。fdsan针对的操作对象是文件描述符,主要用于检测不同使用者对相同文件描述符的错误操作,包括多次关闭(double-close)和关闭后使用(use-after-close)。

2401_88547687的博客 1607

【鸿蒙 5.0 实战开发】HarmonyOS Next ArkTS与C++数据类型转换

本文介绍了C++与TS各自数据类型与互相之间的数据类型转换,在需要使用C++模块时可以快速上手对各种数据类型进行转换。

xiaolizibie的博客 1260

HarmonyOS Next鸿蒙NDK使用示例

HarmonyOS Next鸿蒙NDK使用指南

JohnLiu的博客 1925

Flutter鸿蒙化实战:ASN.1编解码库的C++桥接与ArkTS封装

ASN.1(抽象语法标记一)是定义数据结构的国际标准,广泛应用于X.509数字证书、PKCS#7/PKCS#12加密格式以及TLS/SSL等安全协议中,是网络安全和数据交换的基石。其核心原理是通过一套严谨的编码规则(如DER)将复杂数据结构序列化为字节流,确保跨平台和跨语言的数据一致性。在工程实践中,ASN.1编解码器的实现直接关系到应用的安全通信能力,尤其在处理证书解析、密钥交换等场景时不可或缺。随着鸿蒙HarmonyOS Next的普及,其ArkTS/ArkUI开发范式与Flutter的Dart环境存在

weixin_34327761的博客 410

鸿蒙HarmonyOS NEXT开发环境搭建与ArkTS实战

HarmonyOS NEXT是华为推出的新一代分布式操作系统,其核心开发语言ArkTS基于TypeScript扩展了声明式UI和状态管理能力。开发环境搭建需配置DevEco Studio IDE和HarmonyOS SDK,通过@State、@Prop等装饰器实现数据绑定,采用组件化架构提升代码复用率。在鸿蒙生态中,ArkTS面向对象特性与分布式能力结合,可高效开发跨设备应用。本文以新闻客户端为例,展示从环境配置到性能优化的全流程实践,涵盖状态管理、UI组件封装等核心开发场景,帮助开发者快速掌握Harmon

weixin_33957648的博客 431

HarmonyOS NEXT实战开发——NAPI封装ArkTS接口案例

部分应用的主要开发语言为C/C++,但是HarmonyOS的部分接口仅以ArkTS的形式暴露,因此需要将ArkTS的接口封装为Native接口。本例以DocumentViewPicker的Select方法为例,提供了Napi封装ArkTSAPI的通用方法,本例包含内容如下:Native侧与ArkTS侧的相互调用Native对象转换为ArkTS对象(包括如何在ArkTS侧调用一般形式的Native方法)线程安全函数的使用等待线程安全函数的执行结果多实例情况下,如何在正确的窗口内执行方法。

android__bye的博客 1013

鸿蒙开发语言选型指南:ArkTS、C++与Rust的应用场景与学习路径

在操作系统与应用开发领域,技术栈选型是项目成功的关键基础。其核心原理在于根据不同层级的需求,匹配具备相应特性的编程语言,以实现开发效率、运行性能与系统安全性的最佳平衡。从技术价值看,现代操作系统架构普遍采用分层设计,应用层追求高效开发与跨平台体验,系统层则注重极致性能与硬件控制。在鸿蒙(HarmonyOS)这一分布式操作系统中,这一理念得到典型体现:ArkTS作为应用开发主力,继承了TypeScript的现代特性并深度集成声明式UI框架,大幅降低了前端开发者的迁移门槛,同时通过AOT编译保障了性能;C/C+

weixin_33913332的博客 328

PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

前言 原理简介 输入参数准备 1 objectPoints特征点世界坐标 2 imagePoints特征点在摄像头下的像素点坐标 3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下的坐标 2求相机在世界坐标中的坐标 3效果求解相机在世界坐标系下的坐标点 4求解代码1.前言  很多时候,当我们利用单目相机获取图像时,往往只能获取图像中

cocoaqin的博客 5万+

基于 AUTOSAR 的域控产品软件开发进阶探索

本文深入探讨了AUTOSAR架构在汽车域控产品开发中的进阶应用。首先从系统设计角度分析了AUTOSAR分层架构原理及其在域控产品中的优化部署策略;其次详细介绍了Davinci和EBTresos等主流工具链的特点与协同使用方法;然后重点阐述了ASPICE流程与功能安全/信息安全标准的实施要点;最后分享了多核车载芯片(如NXP S32G)的适配经验与优化实践。通过架构设计、工具运用、标准遵循和芯片适配四个维度的专业解析,为域控产品的AUTOSAR开发提供了系统性指导。

SiArch的博客 1198

【面试经验】大疆笔试-计算机视觉算法B卷

3、a=np.random.randn(3,3) b=np.random.randn(3,1) ,那么c=a*b的维度应该是:*是元素乘法或者torch.mul,@才是矩阵乘法或者torch.matmul,不会触发广播机制;8、将分辨率降低一半时,精标定内参(fx、fy、cx、cy、k1、k2、k3)焦距、光心、畸变系数将分别变成(fx、fy、cx/2、cy/2、k1、k2、k3),只能搜到光心变成一半,畸变系数不变。12、KLT算法在频闪光源、重复纹理、高速机动、环境照度低的情况下效果显著下降。

litterfinger的博客 1444

Ubuntu服务器通过IPV6端口转发搭建幻兽帕鲁私服实战

本文详细介绍了在Ubuntu服务器上通过IPV6端口转发搭建幻兽帕鲁私服的完整教程。针对只有公网IPV6地址的服务器环境,提供了从硬件检查、端口转发工具配置到游戏服务器安装的全流程解决方案,帮助玩家轻松实现多人联机游戏体验。

weixin_30652491的博客 489

ESP32+MAX7219二进制时钟设计与嵌入式时间映射实践

二进制时钟是嵌入式系统中数据表示与物理呈现深度耦合的典型范例,其核心在于将时间语义(年月日时分秒)解构为比特位,并通过LED点阵的空间权重布局实现直观识别。该设计依托RTC模块提供时间基准,依赖SPI协议完成微控制器与专用驱动芯片(如MAX7219)的可靠通信,涉及寄存器级配置、位图坐标变换、软硬件时序对齐等关键原理。技术价值体现在低资源占用下的高可读性人机交互,适用于教学演示、极客项目及嵌入式UI原型开发。本文聚焦ESP32平台在MicroPython环境下,结合MAX7219驱动8×8点阵实现高可靠性二

weixin_42160645的博客 299

正版63棋牌源代码游戏+728游戏全套带前端源代码解析

这俩天抽时间仔细看了一下这套项目包含完整的前端、后端及后台管理系统。从上传的截图可以看出,前端基于资源目录,后端采用和,后台管理界面提供数据查询与管理功能。本篇文章将从前端结构、后端接口、数据库设计、常见 BUG 及优化方法等方面逐步拆解,并给出相应的代码示例和实践经验。

aa2031171的博客 3562

OmniBox2.0.X版本 一站式影视订阅与多端播放平台文档

OmniBox 是一站式影视订阅与多端播放平台:你可以用 JS 或 Python 按 OmniBox 规范自建爬虫源,在后台把多个爬虫源自由组合成订阅,然后在网页、手机、电视等全平台的客户端里使用。只要客户端支持 TVBox、猫源、UZ、Emby 等协议,即可无缝对接。同时支持电视直播源、六大平台直播间和网盘源视频在线观看,通过 Docker 一键部署。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1893

微信小程序 - 实现身份证OCR识别人像面与国徽面并提取字段信息,详解从手机相册选取或打开摄像头拍照上传身份证正反面图片ocr文字识别数据填充表单(提供免费纯前端ocr识别插件+百度OCR识别API)

微信小程序身份证识别,微信小程序身份证拍照、上传并OCR识别,微信小程序实现OCR扫描识别,微信小程序识别身份证免费插件,微信小程序实现身份证识别功能。ocr识别插件。微信身份证拍照后进行ocr识别,微信小程序OCR扫描识别身份证,OCR身份证实名认证+图片上传+拍照上传图片,微信小程序之身份证照片正反上传,小程序OCR身份证识别,微信小程序实现文字识别-ocr插件,微信小程序利用百度AI实现扫描身份证获取信息功能,基于微信小程序OCR插件实现身份证拍照、上传并OCR识别的示例demo,将上传的照片传到服务

🏆 前端领域优质创作者 8133

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 一文搞懂HarmonyOS Next图片视频选择与图片视频拍摄
下一篇: HarmonyOS 音视频之音频采集实战
普通网友
博客等级 码龄2年 7013粉丝 723原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值