未来的节奏
未来的节奏
  • 发布:2024-01-18 16:21
  • 更新:2024-02-26 17:12
  • 阅读:119

在uts中如何将字符串转换为ByteArray

分类:uts
2024-01-18 16:21 负责人:DCloud_Android_DQQ 分享
已邀请:
5***@qq.com

5***@qq.com

const str: string = 'hello world!'  
// @ts-ignore  
const bytes: ByteArray = str.toByteArray()

在 APP 环境下,UTS 的 string 会转成 Kotlin 中的 String 类型,toByteArray() 是 Kotlin 中的语法,虽然 UTS 语法检测工具会报错,但是在 Kotlin 环境中是可用的,// @ts-ignore 注释的意思是让编辑器不对该行进行 UTS 语法检测。转换时也可以指定编码类型,如使用 UTF-8 编码可以这么写:

import StandardCharsets from 'java.nio.charset.StandardCharsets';  
const str: string = 'hello world!'  
// @ts-ignore  
const bytes: ByteArray = str.toByteArray(StandardCharsets.UTF_8)

上面的代码只能运用在 Kotlin 语言中,不具备跨平台能力,即只对编译成安卓 APP 应用时有效,对于 Web 应用会出现错误。因为 JavaScript 中的 string 没有 toByteArray() 这个方法,UTS 也没有封装这个方法到 JavaScript 中的 string 上。

用了几天 UTS,发现他的设计思想和 TypeScript 差不多,本质上来说算不上一种编程语言,更像是一种语法糖,最终会转换成不同平台下的编程语言。为了解决跨平台间的差异,UTS 在不同语言中封装了相似的函数接口,这样就可以抹平差异。UTS 语法提示中给出的语法校验规则,只有抹平了的 API 接口。但是不同语言底层实现方式差异巨大,很难完全抹平,那些只能在某些特定平台下使用的语法特性,由于不具备跨平台的能力,没被 UTS 给抹平,UTS 语法提示工具就不会给出提示。

可以把与平台耦合紧密的语法封装成插件,放在 uni_modules 目录中,在应用中就可以只使用所有语言都共有的特性,即被 UTS 抹平了的语法功能,实现一次开发,多端共用。

写 UTS,没有一定的 TypeScript、JavaScript 和 Kotlin 语言基础,感觉上手还是有点困难的,UTS 像是这几种语言的综合体,是这几种语言共同的子集。

DCloud_Android_DQQ

DCloud_Android_DQQ

感谢反馈,已更新文档,补充了 ByteArray 相关内容。

https://doc.dcloud.net.cn/uni-app-x/uts/data-type.html#kotlinnumber

要回复问题请先登录注册