/* 第一种写法可以在转码后的每个字符前加0x或\\u的标识,后面加空格或制表符。(加标识后可用来转换中文)*/
function str2hex(str){
function str2hex(s){
var str = "";
for (var i = 0; i < s.length; i ) {
str ="0x" s.charcodeat(i).tostring(16) "\\t";
}
return str;
}
/* 第二种写法可以在转码字符串前加0x前缀标识(不加可直接注释:arr.push("0x");)。 适用蓝牙特征值传输。 不可转换中文,会乱码,是由于中文转换后为4个字符,转换成十六进制可以,恢复中文不行:下面转换是以2个字符循环的,中文和字母/数字混在一起后无法判断如何取值*/
function str2hex1(str){
if(str === ""){
return "";
}
var arr = [];
arr.push("0x");//不加"0x"可直接注释:arr.push("0x");
for(var i=0;i<str.length;i ){
arr.push(str.charcodeat(i).tostring(16));
}
return arr.join('');
}
/*对应第一种str2hex转换*/
function hex2str(n) {
var str = "";
var s = n.split('0x');
for(var i = 0;i < s.length;i ){
str = string.fromcharcode(parseint(s[i],16)) "\\t";
}
return str;
}
/*对应第二种str2hex1转换*/
function hex2str1(hex) {
var trimedstr = hex.trim();
var rawstr = trimedstr.substr(0,2).tolowercase() === "0x" ? trimedstr.substr(2) : trimedstr;
var len = rawstr.length;
if(len % 2 !== 0) {
my.alert("illegal format ascii code!");
return "";
}
var curcharcode;
var resultstr = [];
for(var i = 0; i < len;i = i 2) {
curcharcode = parseint(rawstr.substr(i, 2), 16);
resultstr.push(string.fromcharcode(curcharcode));
}
return resultstr.join("");
}