HarmonyOS鸿蒙NEXT中如何将String转成ArrayBuffer

HarmonyOS鸿蒙NEXT中如何将String转成ArrayBuffer

请问str怎么转成ArrayBuffer方法?

3 回复

您好,具体解决方案如下:

  • 将string字符串转换为ArrayBuffer,可借助ArkTS当中的util.TextEncoder,代码案例参考如下:
encoderStringToBuffer(str: string): ArrayBuffer {
  const encoder = util.TextEncoder.create('UTF-8')
  const uint8Array = encoder.encodeInto(str)
  return uint8Array.buffer
}
  • 将ArrayBuffer解码为string字符串,可借助ArkTS当中的util.TextDecoder,代码案例参考如下:
bufferToString(buffer: ArrayBuffer): string {
  let decoder = util.TextDecoder.create('UTF-8')
  let uint8Array = new Uint8Array(buffer)
  return decoder.decodeToString(uint8Array)
}

完整的测试案例代码如下:

import { util } from '@kit.ArkTS';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World! 你好'
  
  encoderStringToBuffer(str: string): ArrayBuffer {
    const encoder = util.TextEncoder.create('UTF-8')
    const uint8Array = encoder.encodeInto(str)
    return uint8Array.buffer
  }

  bufferToString(buffer: ArrayBuffer): string {
    let decoder = util.TextDecoder.create('UTF-8')
    let uint8Array = new Uint8Array(buffer)
    return decoder.decodeToString(uint8Array)
  }

  build() {
    Column({space: 20}) {
      Button("encoderStringToBuffer")
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
        .onClick(() => {          
          let buffer = this.encoderStringToBuffer(this.message)
          console.info(new Int8Array(buffer).join(","))
          console.info(this.bufferToString(buffer))
        })
    }
    .height('100%')
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }
}

更多关于HarmonyOS鸿蒙NEXT中如何将String转成ArrayBuffer的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中,将String转为ArrayBuffer可以使用TextEncoder。具体代码如下:

let str = "Hello World";
let encoder = new TextEncoder();
let arrayBuffer = encoder.encode(str).buffer;

TextEncoder的encode()方法将字符串转为Uint8Array,通过访问其buffer属性即可获得ArrayBuffer。这是标准的Web API实现,与鸿蒙的ArkUI开发框架兼容。

需要注意字符串编码默认为UTF-8,若需其他编码需通过TextEncoder构造参数指定。此方法适用于eTS/ArkTS开发场景。

在HarmonyOS Next中,可以通过TextEncoder API将String转换为ArrayBuffer。具体实现代码如下:

// 创建TextEncoder实例
const encoder = new TextEncoder();

// 将字符串编码为Uint8Array
const uint8Array = encoder.encode("你的字符串");

// 转换为ArrayBuffer
const arrayBuffer = uint8Array.buffer;

或者更简洁的一行代码实现:

const arrayBuffer = new TextEncoder().encode("字符串").buffer;

这个方法利用了标准的TextEncoder API,它是Web标准的一部分,在HarmonyOS Next中同样适用。TextEncoder会将字符串转换为UTF-8编码的字节序列,存储在Uint8Array中,然后通过buffer属性获取对应的ArrayBuffer。

回到顶部