base64 string 放不下_base64转换string

1.通过函数转

function Base64ToStr1(const Base64: string): string;

var

I, J, K, Len, Len1: Integer;

B4: array[0..3] of Byte;

begin

if Base64 = '' then

begin

Result := '';

Exit;

end;

Len := Length(Base64);

if Len and 3 <> 0 then

raise Exception.Create('Invalid Base64 length');

Len1 := (Len shr 2) * 3;

SetString(Result, nil, Len1);

I := 1;

J := 1;

while I <= Len do

begin

for K := 0 to 3 do

begin

case Base64[I] of

'A'..'Z':

B4[K] := Ord(Base64[I]) - 65;

'a'..'z':

B4[K] := Ord(Base64[I]) - 71;

'0'..'9':

B4[K] := Ord(Base64[I]) + 4;

'+':

B4[K] := 62;

'/':

B4[K] := 63;

'=':

B4[K] := 0;

else

raise Exception.CreateFmt('#%d: Invalid char in Base64', [Ord(Base64[I])]);

end;

Inc(I);

end;

Result[J] := Chr((B4[0] shl 2) or (B4[1] shr 4));

Result[J + 1] := Chr((B4[1] shl 4) or (B4[2] shr 2));

Result[J + 2] := Chr((B4[2] shl 6) or B4[3]);

Inc(J, 3);

end;

I := Pos('=', Base64);

if I <> 0 then

begin

I := Len - I + 1;

Delete(Result, Len1 - I + 1, I);

end;

end;

2.用字符串流转

sst := TStringStream.Create(str);

sst.Position :=0;

ms := TMemoryStream.Create;

DecodeStream(sst,ms);


版权声明:本文为weixin_42502736原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。