具体函数如下:
//转成十六进制的Unicode
function strToHex(str){
var val="";
for(var i = 0; i < str.length; i++){
if(val == "")
val = "\\u" +Number(str.charCodeAt(i)).toString(16);
else
val += ","+"\\u" + Number(str.charCodeAt(i)).toString(16);
}
return val;
}
//还原回十进制的
function hexToStr(str){
var val="";
var arr = str.split(",");
for(var i = 0; i < arr.length; i++){
arr[i] = arr[i].replace("\\u","")
val += String.fromCharCode(parseInt(arr[i],16).toString(10));
}
return val;
}
具体函数解析如下:
不同进制的数字转换函数:
new Number(num).toString(n);
比如十六进制转十进制:
new Number(0x0031).toString(10)
字符串转指点进制的数字:
parseInt(str,n); // 将str按n进制转化成十进制数字
数字转指定字符串:
new Number(num).toString(n); // 将上述转换十进制结果num转换成指定n进制的字符串
字符串转Unicode编码:
var code = str.charCodeAt( idx ); // 返回Unicode 编码,idx为数组的下标
转成十六进制:
var code = str.charCodeAt( idx ); // 返回Unicode 编码,idx为数组的下标
Number(code).toString(16); // 返回十六进制的Unicode
十六进制的Unicode转字符串:
var arr = new Array("0x0031","0x0032","0x0033","0x0034");
var dec;
for(var i = 0; i < arr.length; i++){
dec = parseInt(arr[i],16).toString(10);//将十六进制的Unicode转成十进制的数字
val += String.fromCharCode(dec);//将十进制转成Unicode中对应的字符
}
Unicode编码的发展可以查看文章http://www.ruanyifeng.com/blog/2014/12/unicode.html