客户专线:400-641-8864 / 153-2383-7083 | 在线QQ:987837344
首页 易当家ERP 鼎捷ERP 行业方案 实施方法 联系我们  
 

利用Delphi 7实现Base64编码解码



利用Delphi实现Base64的编码解码

///////源代码开始
const
  cBase64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

function Base64Encode(mSource: string; mAddLine: Boolean = True): string;
var
  I, J: Integer;
  S: string;
begin
  Result := '';
  J := 0;
  for I := 0 to Length(mSource) div 3 - 1 do begin
    S := Copy(mSource, I * 3 + 1, 3);
    Result := Result + cBase64[Ord(S[1]) shr 2 + 1];
    Result := Result + cBase64[((Ord(S[1]) and $03) shl 4) + (Ord(S[2]) shr 4) + 1];
    Result := Result + cBase64[((Ord(S[2]) and $0F) shl 2) + (Ord(S[3]) shr 6) + 1];
    Result := Result + cBase64[Ord(S[3]) and $3F + 1];
    if mAddLine then begin
      Inc(J, 4);
      if J >= 76 then begin
        Result := Result + #13#10;
        J := 0;
      end;
    end;
  end;
  I := Length(mSource) div 3;
  S := Copy(mSource, I * 3 + 1, 3);
  case Length(S) of
    1: begin
        Result := Result + cBase64[Ord(S[1]) shr 2 + 1];
        Result := Result + cBase64[(Ord(S[1]) and $03) shl 4 + 1];
        Result := Result + cBase64[65];
        Result := Result + cBase64[65];
      end;
    2: begin
        Result := Result + cBase64[Ord(S[1]) shr 2 + 1];
        Result := Result + cBase64[((Ord(S[1]) and $03) shl 4) + (Ord(S[2]) shr 4) + 1];
        Result := Result + cBase64[(Ord(S[2]) and $0F) shl 2 + 1];
        Result := Result + cBase64[65];
      end;
  end;
end; { Base64Encode }

function Base64Decode(mCode: string): string;
var
  I, L: Integer;
  S: string;
begin
  Result := '';
  L := Length(mCode);
  I := 1;
  while I <= L do begin
    if Pos(mCode[I], cBase64) > 0 then begin
      S := Copy(mCode, I, 4);
      if (Length(S) = 4) then begin
        Result := Result + Chr((Pos(S[1], cBase64) - 1) shl 2 +
          (Pos(S[2], cBase64) - 1) shr 4);
        if S[3] <> cBase64[65] then begin
          Result := Result + Chr(((Pos(S[2], cBase64) - 1) and $0F) shl 4 +
            (Pos(S[3], cBase64) - 1) shr 2);
          if S[4] <> cBase64[65] then
            Result := Result + Chr(((Pos(S[3], cBase64) - 1) and $03) shl 6 +
              (Pos(S[4], cBase64) - 1));
        end;
      end;
      Inc(I, 4);
    end else Inc(I);
  end;
end; { Base64Decode }
///////源代码结束

///////使用示例开始
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo2.Text := Base64Encode(Memo1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Text := Base64Decode(Memo2.Text);
end;
///////使用示例结束



猜您喜欢:     易当家E9ERP     易当家E8ERP     微信公众号开发

ERP,ERP系统,ERP软件
ERP软件 | 鼎捷软件 | 神州数码 |
Copyright© 2008-2016 深圳市易当家软件开发有限公司. All Rights Reserved. 粤ICP备14043283号