,,JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
射流研究…实现BASE64编码和BASE64_DECODE(实例代码)需要的朋友可以过来参考下,希望对大家有所帮助
Base64是一种基于64个可打印字符来表示二进制数据的表示方法由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符三个字节有24个比特,对应于四个Base64单元,即3个字节需要用四个可打印字符来表示它可用来作为电子邮件的传输编码在Base64中的可打印字符包括字母A-Z,a-z,数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同(本类库里面用的是` `,`/`这两个字符)一些如把二进制文件编码为文本文件的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64
Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据包括哑剧的电子邮件,通过哑剧的电子邮件,在可扩展标记语言中存储复杂数据
Base64其实是一种简单的置换加密方式,但是BASE64的用处往往并不是为了防止信息泄露,而且为了方便传输,进过BASE64编码后的信息会比原始信息长,大概是4/3倍
实现代码一、测试可以用
var base 64 encode chars=' abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 0123456789/';
varbase 64 decodechars=新数组(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,2,-1,62,-1,-1,63,52,53,54,55
/**
*base64编码
*@param{Object}str
*/
functionbase64encode(str){
瓦劳特,我,伦
varc1,c2,C3;
len=字符串长度
I=0;
out=
while(ilen){
C1=海峡charcodeat(I)0x ff;
if(i==len){
out=base 64 encodecharscharat(c12);
out=base 64 encodecharscharat((c10x 3)4);
out='==
打破;
}
C2=海峡charcode at(I);
if(i==len){
out=base 64 encodecharscharat(c12);
out=base 64 encodecharscharat((c10x 3)4)|((c20xf 0)4));
out=base 64 encodecharscharat((c20xF)2);
out='=
打破;
}
C3=海峡charcode at(I);
out=base 64 encodecharscharat(c12);
out=base 64 encodecharscharat((c10x 3)4)|((c20xf 0)4));
out=base 64 encodecharscharat((c20xF)2)|((c30xc 0)6));
out=base 64 encodecharscharat(c 30x3f);
}
返回;
}
/**
*base64解码
*@param{Object}str
*/
functionbase64decode(str){
varc1,c2,c3,C4;
瓦里,莱恩,出去
len=字符串长度
I=0;
out=
while(ilen){
/*c1*/
做{
C1=base 64 decade chars[strcharcodeat(I)0x ff];
}
while(伊伦·C1==-1);
如果(c1==-1)
打破;
/*c2*/
做{
C2=base 64 decade chars[strcharcodeat(I)0x ff];
}
while(ile nc2==-1);
如果(c2==-1)
打破;
out=字符串from charcode((c12)|((c20x 30)4));
/*c3*/
做{
C3=海峡charcodeat(I)0x ff;
如果(c3==61)
返回;
C3=base64解码器[C3];
}
while(ile nc3==-1);
如果(c3==-1)
打破;
out=字符串from charcode((c20XF)4)|((c30x3C)2));
/*c4*/
做{
C4=海峡charcodeat(I)0x ff;
如果(c4==61)
返回;
C4=base64解码器[C4];
}
while(伊伦·C4==-1);
如果(c4==-1)
打破;
out=字符串来自charcode((c30x 03)6)| C4);
}
返回;
}
/**
*utf16转utf8
*@param{Object}str
*/
functionutf16to8(str){
varout,I,len,c;
out=
len=字符串长度
for(I=0;ileni ){
c=strcharcode at(I);
if((c=0x0001)(c=0x007F)){
out=str查拉特(一);
}
其他
if(c0x07FF){
out=字符串from charcode(0x E0 |((c12)0x0F));
out=字符串from charcode(0x 80 |((C6)0x3F));
out=字符串from charcode(0x 80 |((c0)0x3F));
}
否则{
out=字符串from charcode(0xc 0 |((C6)0x1F));
out=字符串from charcode(0x 80 |((c0)0x3F));
}
}
返回;
}
/**
*utf8转utf16
*@param{Object}str
*/
functionutf8to16(str){
varout,I,len,c;
varchar2,char3
out=
len=字符串长度
I=0;
while(ilen){
c=strcharcode at(I);
开关(c4){
案例0:
案例1:
案例2:
案例3:
案例4:
案例5:
案例6:
案例7:
//0xxxxx
xx
out=str。charat(I-1);
打破;
案例12:
案例13:
//110
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。