HarmonyOS 进制转换问题

将16进制字符串转换为Uint8Array的方法是什么?

HarmonyOS
16h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

当前暂不支持16进制字符串直接转换为Uint8Array,可以将16进制字符串转换成字符串进而通过已有方法将其间接转换成Uint8Array,参考示例:

import { promptAction } from '@kit.ArkUI';
import buffer from '@ohos.buffer';
import { util } from '@kit.ArkTS';


@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  hexToString(hex: string): string {
    let hexString = hex;
    if (hex.indexOf('0x') === 0) {
      hexString = hex.substring(2, hex.length);
    }
    let buf = buffer.from(hex, 'hex');
    return buf.toString();
  }

  stringToHex(input: string): string {
    return Array.from(input)
      .map(char => char.charCodeAt(0).toString(16).padStart(2, '0'))
      .join('');
  }

  build() {
    Row() {
      Column() {
        // 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果
        Button(`点击`)
          .onClick(() => {

            //字符串转16进制

            // let param = buffer.from("测试一下啊").toString('hex')
            // let param = buffer.from("测试一下啊ewedwefaefa").toString('hex')
            let param = buffer.from("ewedwefaefa").toString('hex')

            console.log(`16进制:${param}`)


            //16进制转字符串
            let str = this.hexToString(param)
            console.log(`str:${str}`)

            let array = stringToArray(str)
            console.log(`Uint8Array:${JSON.stringify(array)}`)

            let arrayStr = arrayToString(array)
            console.log(`Uint8Array转字符串:${JSON.stringify(arrayStr)}`)


            let param2 = buffer.from(arrayStr).toString('hex')
            console.log(`16进制2:${param2}`)


            promptAction.showToast({ message: `方法已执行,请查看控制台日志信息` })
          })
      }.justifyContent(FlexAlign.Center)
      .width("100%")
      .height("100%")
    }
  }
}

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

function arrayToString(arr: Uint8Array): string {
  let textDecoder = util.TextDecoder.create("utf-8", { ignoreBOM: true });
  let str = textDecoder.decodeWithStream(arr, { stream: false })
  return str;
}
分享
微博
QQ
微信
回复
14h前
相关问题
HarmonyOS进制转16进制
1浏览 • 0回复 待解决
HarmonyOS 数据强制转换问题
0浏览 • 0回复 待解决
HarmonyOS ArkTS类型转换问题
784浏览 • 1回复 待解决
HarmonyOS进制转二进制方法
7浏览 • 0回复 待解决
HarmonyOS网络请求后JSON转换问题
739浏览 • 1回复 待解决
设计稿单位转换问题
867浏览 • 1回复 待解决
HarmonyOS ResourceColor 转16进制 string
45浏览 • 1回复 待解决
HarmonyOS 两个枚举类型之间转换问题
152浏览 • 1回复 待解决
ohos.util.json转换string问题
288浏览 • 1回复 待解决
HarmonyOS Uint8Array转16进制
1浏览 • 0回复 待解决
HarmonyOS 十六进制字符转明文字符串
173浏览 • 1回复 待解决
如何对二进制进行AES解密?
239浏览 • 1回复 待解决
HarmonyOS gzip二进制流压缩和解压缩
811浏览 • 1回复 待解决
如何直接加载二进制流的图片?
2791浏览 • 1回复 待解决
jsbind--二进制包导入指导
839浏览 • 1回复 待解决
HarmonyOS 转换时间戳的方法
632浏览 • 1回复 待解决
HarmonyOS Resource怎么进行转换类型
620浏览 • 1回复 待解决