1、
//编码
value = base64encode(utf16to8(src))
//解码
value = utf8to16(base64decode(src))
这里:base64编码之前先转成utf8,解码出来的也要从utf-8转为utf-16
2、base64编码分为字符串编码成字符串,字符串编码成数组,字符串解码成数组,字符串解码成字符串,等
var startCmd2=[92,161,177,0,0,214,135]; var str = ''; for(var i=0 , len=startCmd2.length ; i < len ;++i){ str += String.fromCharCode(startCmd2[i]);
这是数组转成字符串的方法,亲测可用。
3、以下是我用到的字符串转成字符串编码方式:
function base64encode(str) { var out, i, len; var c1, c2, c3; len = str.length; i = 0; out = ""; while(i < len) { c1 = str.charCodeAt(i++) & 0xff; if(i == len) { out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt((c1 & 0x3) << 4); out += "=="; break; } c2 = str.charCodeAt(i++); if(i == len) { out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); out += base64EncodeChars.charAt((c2 & 0xF) << 2); out += "="; break; } c3 = str.charCodeAt(i++); out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)); out += base64EncodeChars.charAt(c3 & 0x3F); } return out; }
4、以下是我用到的字符串转成数组解码方式:
function decodeBase64(strIn){ if(!strIn.length||strIn.length%4) return null; var str64= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var index64=[]; for(var i=0;i<str64.length;i++) index64[str64.charAt(i)]=i; var c0,c1,c2,c3,b0,b1,b2; var len=strIn.length; var len1=len; if(strIn.charAt(len-1)=='=') len1-=4; var result=[]; for(var i=0,j=0;i<len1;i+=4){ c0=index64[strIn.charAt(i)]; c1=index64[strIn.charAt(i+1)]; c2=index64[strIn.charAt(i+2)]; c3=index64[strIn.charAt(i+3)]; b0=(c0<<2)|(c1>>4); b1=(c1<<4)|(c2>>2); b2=(c2<<6)|c3; result.push(b0&0xff); result.push(b1&0xff); result.push(b2&0xff); } if(len1!=len){ c0=index64[strIn.charAt(i)]; c1=index64[strIn.charAt(i+1)]; c2=strIn.charAt(i+2); b0=(c0<<2)|(c1>>4); result.push(b0&0xff); if(c2!='='){ c2=index64[c2]; b1=(c1<<4)|(c2>>2); result.push(b1&0xff); } } return result; }
如果需要utf-8和utf-16的转换自行搜索吧……