首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ArkTS如何实现string和byte数组互转

ArkTS如何实现string和byte数组互转

作者头像
徐建国
发布2023-02-23 11:35:56
发布2023-02-23 11:35:56
2.7K0
举报
文章被收录于专栏:个人路线个人路线

ArkTS如何实现string和byte数组互转

作者:坚果,公众号:”大前端之旅“,哔哩哔哩,OpenHarmony布道师,OpenHarmony校源行开源大使,51CTO博客专家博主,阿里云博客专家。

Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。本文通过代码来完成string和byte数组互转。

附完整代码

代码语言:javascript
复制
function stringToByte(str) {
  var bytes = new Array();
  var len,c;
  len = str.length;
  for(var i = 0;i<len;i++) {
    c = str.charCodeAt(i);
    if( c >= 0x010000 && c<= 0x10FFFF) {
      bytes.push(((c>>18) & 0x07) | 0xf0);
      bytes.push(((c>>12) & 0x3F) | 0x80);
      bytes.push(((c>>6) & 0x3f) | 0x80);
      bytes.push((c & 0x3F) | 0x80);
    } else if(c >= 0x000800 && c<= 0x00FFF){
      bytes.push(((c>>12) & 0x07) | 0xf0);
      bytes.push(((c>>6) & 0x3F) | 0x80);
      bytes.push((c & 0x3F) | 0x80);
    } else if(c >= 0x000800 && c<= 0x0007FF) {
      bytes.push(((c>>6) & 0x3F) | 0x80);
      bytes.push((c & 0x3F) | 0x80);
    } else {
      bytes.push(c & 0xFF)
    }
  }
  return bytes;
}

function byteToString(arr) {
  if(typeof arr === 'string') {
    return arr;
  }
  var str = '',
    _arr = arr;
  for(var i = 0; i < _arr.length; i++) {
    var one = _arr[i].toString(2),
      v = one.match(/^1+?(?=0)/);
    if(v && one.length == 8) {
      var bytesLength = v[0].length;
      var store = _arr[i].toString(2).slice(7 - bytesLength);
      for(var st = 1; st < bytesLength; st++) {
        store += _arr[st + i].toString(2).slice(2);
      }
      str += String.fromCharCode(parseInt(store, 2));
      i += bytesLength - 1;
    } else {
      str += String.fromCharCode(_arr[i]);
    }
  }
  return str;
}


@Entry
@Component
struct Index {

  @State context:string="格式转换"


  build() {
    Row() {
      Column() {
        Text(this.context)
          .fontSize(50)
          .fontWeight(FontWeight.Bold).onClick(()=>{


        })
        Text("byte转string")
          .fontSize(50)
          .fontWeight(FontWeight.Bold).onClick(()=>{
          this.context=JSON.stringify(byteToString([200,156]))

        })
        Text("string转byte")
          .fontSize(50)
          .fontWeight(FontWeight.Bold).onClick(()=>{
          this.context=JSON.stringify(stringToByte("坚果"))

        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

关于运行后的效果,大家可以自己试一下。

往期文章

OpenHarmony/HarmonyOS震动模块的使用

OpenHarmony 应用开发中普通应用如何提升应用等级

OpenHarmony/HarmonyOS如何切换横竖屏?

@system.app (应用上下文)使用

HarmonyOS/OpenHarmony 双击返回与退出App

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ArkTS如何实现string和byte数组互转
  • 往期文章
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档