AnsiString DecodeBase64(AnsiString Source)
{
byte x1,x2,x3,x4,xt;
int SrcLen,Times,i;
AnsiString Result;
Result= " ";
SrcLen=Source.Length();
Times=SrcLen / 4;
for(i=0;i <Times;i++)
{
x1=FindInTable(Source[1+i*4]);
x2=FindInTable(Source[2+i*4]);
x3=FindInTable(Source[3+i*4]);
x4=FindInTable(Source[4+i*4]);
x1 < <=2;
xt=x2> > 4;
x1=x1 | xt;
Result+=char(x1);
x2 < <=4;
if (x3==64) break;
xt=x3> > 2;
x2=x2 | xt;
x3 < <=6;
Result+=char(x2);
if (x4==64) break;
x3=x3 | x4;
Result+=char(x3);
}
return Result;
}
AnsiString EncodeBase64(AnsiString Source)
{
int Times,LenSrc,i;
unsigned char x1,x2,x3,x4,xt,xt1;
AnsiString Result;
Result= " ";
LenSrc=Source.Length();
if (LenSrc % 3==0) Times=LenSrc/3;
else Times=LenSrc/3+1;
for(i=0;i <Times;i++)
{
if (LenSrc> =(3*i+3))
{
xt=Source[1+i*3];
xt> > =2;
x1=BaseTable[xt+1];
xt=Source[1+i*3];
xt < <=4;
xt&=48;
xt1=Source[2+i*3];
xt1> > =4;
xt|=xt1;
x2=BaseTable[xt+1];
xt=Source[2+i*3];
xt < <=2;
xt&=60;
xt1=Source[3+i*3];
xt1> > =6;
xt|=xt1;
x3=BaseTable[xt+1];
xt=Source[3+i*3] ;
xt&=63;
x4=BaseTable[xt+1];
}
else if (LenSrc> =3*i+2)
{
xt=Source[1+i*3];
xt> > =2;
x1=BaseTable[xt+1];
xt=Source[1+i*3];
xt < <=4;
xt&=48;
xt1=Source[2+i*3];
xt1> > =4;
xt|=xt1;
x2=BaseTable[xt+1];
xt=Source[2+i*3];
xt < <=2;
xt&= 60;
x3=BaseTable[xt+1];
x4= '= ';
}
else
{
xt=Source[1+i*3];
xt> > =2;
x1=BaseTable[xt+1];
xt=Source[1+i*3] ;
xt < <=4;
xt&=48;
x2=BaseTable[xt+1];
x3= '= ';
x4= '= ';
}
Result+=char(x1);
Result+=char(x2);
Result+=char(x3);
Result+=char(x4);
}
return Result;
}
Base64编解代码
最新推荐文章于 2022-06-14 11:04:13 发布