作者:坚果,公众号:”大前端之旅“,哔哩哔哩,OpenHarmony布道师,OpenHarmony校源行开源大使,51CTO博客专家博主,阿里云博客专家。
Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。本文通过代码来完成string和byte数组互转。
附完整代码
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