Base64编码delphi算法!

Base64编码delphi算法!学习Base64编码算法时写的

procedure TForm1.Button1Click(Sender: TObject);
var
_1byte,_2byte:array of byte;
strlen,i,j,jj:integer;
str:string;
const
basetable='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
str:='abcabcde';
//str:='abcabc';
strlen:=length(str);
setlength(_1byte,strlen);
if strlen mod 3 >0 then setlength(_2byte,((strlen div 3) * 4 + strlen mod 3)+1)
else setlength(_2byte,(strlen div 3)*4+(strlen mod 3)+0);

for i:=0 to strlen-1 do
begin
_1byte[i]:=ord(str[i+1]);
end;
j:=0;
jj:=0;
for i:=0 to (strlen div 3)-1 do
begin
j:=i*3;
_2byte[jj]:=_1byte[j] shr(2); //a->A;
inc(jj);
_2byte[jj]:=byte(_1byte[j] shl(6)) shr(2) + _1byte[j+1] shr(4); //a&b->B
inc(jj);
_2byte[jj]:=byte(_1byte[j+1] shl(4)) shr(2)+_1byte[j+2]shr(6); //b&c->C
inc(jj);
_2byte[jj]:=byte(_1byte[j+2] shl(2))shr(2);
inc(jj);
end;
j:=(strlen div 3)*3;
case (strlen mod 3) of
1:
begin
_2byte[jj]:=_1byte[j] shr(2); //a->A;
inc(jj);
_2byte[jj]:=byte(_1byte[j] shl(6)) shr(2); //a&b->B
end;
2:
begin
_2byte[jj]:=_1byte[j] shr(2); //a->A;
inc(jj);
_2byte[jj]:=byte(_1byte[j] shl(6)) shr(2) + _1byte[j+1] shr(4); //a&b->B
inc(jj);
_2byte[jj]:=byte(_1byte[j+1] shl(4)) shr(2); //b2->C
end;
end;
//按照编码显示!
str:='';
for i:=0 to high(_2byte) do
begin
str:=str+copy(basetable,_2byte[i]+1,1);
end;
showmessage(str);
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值