当前位置: 首页 > 科技观察

OpenHarmony数据转码应用开发实践(中)

时间:2023-03-12 04:32:42 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com一个合适的实际项目去实践,对提高自己的技术能力会有很大的帮助。本文将通过一个小项目——数据转码应用来讲解应用开发的全过程。过程。在《OpenHarmony数据转码应用开发实战(上)》中,我们描述了项目的需求、设计、项目创建、UI界面开发。本文将重点介绍转码工具包的实现和UI组件的数据绑定。建议在编写转码工具包时单独创建包路径,不要和页面UI一起写,方便维护和代码复用。我们创建/entry/src/main/ets/MainAbility/utils/numConvertUtil.ets,然后在index.ets页面导入。工具包会导出一个工具对象,每个方法实现一个转码需求。代码如下:exportdefault{/***十进制转十六进制,补零*@paramnum*@paramlen=2*/dec2hex:function(numStr:string,len:number=2){console.log(JS_TAG+'dec2hex'+numStr)letresult:string=Number(numStr).toString(16).toUpperCase()result=this.addZero(result,len)returnresult},/***十六进制转十进制*@paramnum*/hex2dex:function(numStr:string){console.log(JS_TAG+'hex2dex'+numStr)returnparseInt(numStr,16).toString()},/***十六进制转二进制*@paramnum*@paramlen*/hex2bin:function(numStr:string,len:number=2){lethexNum:number=parseInt(numStr,16)letresult:string=Number(hexNum).toString(2)result=this.addZero(result,len)returnresult},/***二进制转十六进制*@paramnum*@paramlen*/bin2hex:function(numStr:string){letnum:number=parseInt(numStr,2)letresult:string=Number(num).toString(16)结果=this.addZero(result)returnresult},/***16进制转ASCII码*@paramhexCharCodeStr*/hex2ascii:function(hexStr:string){consttempStr:string=hexStr.trim()constrawStr:string=tempStr.substr(0,2).toLowerCase()==='0x'?tempStr.substr(2):tempStrconstlen:number=rawStr.lengthif(len%2!==0){return''}让curCharCodeconstresultStr=[]for(leti=0;i0){for(leti=0;i{this.dec2hex()})Textarea数据变化事件是onChange,不能像VUE组件一样直接通过值绑定获取,变化的值只能通过onChange事件获取TextArea().width('100%').height(180).backgroundColor(0x0ffff).borderRadius(0).onChange((value)=>{this.strInput=valueconsole.log(this.strInput)})点击事件直接调用工具包dec2hex(){this.strEncode=''console.log(JS_TAG+this.strInput)this.strEncode=numConvertUtil.dec2hex(this.strInput)console.log(JS_TAG+this.strInput+''+this.strEncode)}hex2dex(){this.strEncode=''this.strEncode=numConvertUtil.hex2dex(this.strInput)console.log(JS_TAG+this.strInput+''+this.strEncode)}hex2bin(){this.strEncode=''this.strEncode=numConvertUtil.hex2bin(this.strInput)console.log(JS_TAG+this.strInput+''+this.strEncode)}bin2hex(){this.strEncode=''this.strEncode=numConvertUtil.bin2hex(this.strInput)console.log(JS_TAG+this.strInput+''+this.strEncode)}hex2ascii(){this.strEncode=''this.strEncode=numConvertUtil.hex2ascii(this.strInput)控制台。日志(JS_TAG+this.strInput+''+this.strEncode)}ascii2hex(){this.strEncode=''this.strEncode=numConvertUtil.ascii2hex(this.strInput)console.log(JS_TAG+this.strInput+''+this.strEncode)}总结在编码过程中我们有提前规划公共方法,不仅可以降低维护成本,还可以实现代码重用。eTS的组件事件与VUE框架大致相同,但也有细微差别。比如Textarea的值绑定就是通过onChange事件获取的。不确定的时候可以多看官方组件文档。了解更多开源请访问:开源基础软件社区https://ost.51cto.com