Uint8Array和string之间的相互转换

Uint8Array和string之间的相互转换

HarmonyOS
2024-06-11 20:18:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
kaixinsanmao

1、首先,在convertStrToUint8Arr 方法中进行类型判断,如果输入参数是 Date 类型则返回空;

2、检查字符串是否为空或者只包含空白字符,如果是则返回空;

3、最后使用 TextEncoder 对象将字符串编码为 Uint8Array,并返回结果。

4、通过 convertUint8ArrToStr 方法将 Uint8Array 转换为字符串,如果输入参数不是 Uint8Array 类型则返回空字符串;最后使用 TextDecoder 对象将 Uint8Array 解码为字符串,并返回结果。

参考代码如下:

convertStrToUint8Arr(source: string | Date): Uint8Array | null { 
  //类型判断 
  if (this.typeChecker.isDate(source)) { 
    this.paramCheckMsg = 'source is not a string' 
    return null; 
  } 
 
  let sourceStr = source as string; 
  //检查转换后的字符串是否为空或者只包含空白字符 
  if (sourceStr == '' || sourceStr.trim() == '') { 
    this.paramCheckMsg = 'encodeStrToUint8Arr param is empty' 
    return null; 
  } 
  // 
  return new util.TextEncoder().encodeInto(sourceStr); 
} 
 
convertUint8ArrToStr(arr: Uint8Array | object): string { 
  //创建了一个 TextDecoder 对象,用于解码 Uint8Array 数组为字符串。这里指定了字符编码为 UTF-8 
  //ignoreBOM:是否忽略BOM(byte order marker)标记,默认值为false ,表示解码结果包含BOM标记。 
  let textDecoder = new util.TextDecoder("utf-8",{ignoreBOM: true}); 
  // 使用 typeChecker.isUint8Array(arr) 来检查参数 arr 是否为 Uint8Array 类型的数组。如果是,则使用 TextDecoder 对象将数组解码为字符串并返回;否则返回空字符串。 
  return this.typeChecker.isUint8Array(arr) ? textDecoder.decode(arr as Uint8Array, {stream: false}) : ""; 
} 
 
let sourceStr = 'happy everyday'; 
// 调用 convertStrToUint8Arr 方法将字符串转换为 Uint8Array 
let buffer: Uint8Array | null = this.convertStrToUint8Arr(sourceStr); 
console.debug("convertStrToUint8Arr buffer = " + buffer); 
// 判断返回值 
if (buffer == null) return; 
// 调用 convertUint8ArrToStr 方法将 Uint8Array 转换为字符串 
let retStr: string = this.convertUint8ArrToStr(buffer); 
console.debug("convertUint8ArrToStr retStr = " + retStr);
分享
微博
QQ
微信
回复
2024-06-12 16:54:57
相关问题
Uint8Array 如何直接转为String or Json
730浏览 • 1回复 待解决
Uint8Array如何转成ArrayBuffer
756浏览 • 1回复 待解决
pxvp之间如何相互转换
718浏览 • 1回复 待解决
Uint8Array 在native层去解析提示过期
225浏览 • 1回复 待解决
如何实现PixelMapbase64相互转换
489浏览 • 1回复 待解决
是否有Byte KB MB GB之间转换接口
732浏览 • 1回复 待解决
Map类型怎么转换成Json string
706浏览 • 1回复 待解决
Array快速转成ArrayList
445浏览 • 1回复 待解决
TaskPoolWorker之间异同点是什么
45浏览 • 1回复 待解决
卡片app之间数据是如何交互
773浏览 • 1回复 待解决
flutter鸿蒙如何相互调用?
12577浏览 • 3回复 待解决
harhsp转换,有好方案吗?
289浏览 • 1回复 待解决
ArkTSC++之间交互
470浏览 • 1回复 待解决
如何在ArkTS中实现JSONMap转换
639浏览 • 1回复 待解决
hsphar包互相转换方案
618浏览 • 1回复 待解决