为什么在Delphi6里提供Base64Encode函数而没有相关的解码函数。还是我没有找到,忘指教。
解决方案 »
- 循环运行完这句之后SetLength(sRet, pData.iDataLen - (SHEAD_LEN + 1) + 2);内存溢出了
- 有多个ie进程时弹出ie窗口出现超时错误!!!!急!!!
- 如何将文件复制到粘贴板
- 哪里要兼职delphi程序员???
- 请教如何自己构造数据库文件?
- 关于做实时的一个物流管理系统
- 猛料--》真猛,大家猛才是真的猛!得到好东西一定要算散分!
- 如何把象姓名和密码之类的信息写入注册表,然后在需要时取出来。
- 如何在Word文档的指定位置插入特定数据(如数据表字段值
- 送分了: String 怎样转换成 Char?
- 《中国开发者联盟》 欢迎您的加入!
- 又到了招聘求职的高峰期,有谁知道在那个网址可以查CET证书的真伪?就是那种输入一个证号或名字就可以辨别真伪的。不要告诉我亿唐。ps:
//BaseTable
BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
......
function FindInTable(CSource:char):integer;
begin
result:=Pos(string(CSource),BaseTable)-1;
end;function DecodeBase64(Source:string):string;
var
SrcLen,Times,i:integer;
x1,x2,x3,x4,xt:byte;
begin
result:='';
SrcLen:=Length(Source);
Times:=SrcLen div 4;
for i:=0 to Times-1 do
begin
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:=x1 shl 2;
xt:=x2 shr 4;
x1:=x1 or xt;
x2:=x2 shl 4;
result:=result+chr(x1);
if x3= 64 then break;
xt:=x3 shr 2;
x2:=x2 or xt;
x3:=x3 shl 6;
result:=result+chr(x2);
if x4=64 then break;
x3:=x3 or x4;
result:=result+chr(x3);
end;
end;