Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.053 Beiträge
Delphi 2009 Professional
|
AW: Base64/ Mime für Dateien
13. Sep 2017, 15:52
Ist an sich schnell geschrieben:
Delphi-Quellcode:
procedure Base64EncodeStream(Input, Output: TStream);
const
Base64: array[0..64] of Byte = (
65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,
48,49,50,51,52,53,54,55,56,57,43,47,$3D);
var
count: Byte;
temp: Cardinal;
i, j: Integer;
begin
Count := 0;
Temp := 0;
for i := 0 to (Input.Size + 2) div 3 - 1 do
begin
Count := Input.Read(temp, 3);
temp := temp and $ff00 + temp shl 16 + temp shr 16; // Endianness drehen
for j := 0 to Count do
begin
temp := temp shl 6;
Output.WriteBuffer(Base64[(temp shr 18) and $3f], 1);
end;
end;
for j := Count to 2 do
Output.WriteBuffer(Base64[64], 1);
end;
Ich würde übrigens TMemoryStreams nehmen. Viele kleine Zugriffe auf TFileStream sind abartig langsam.
Janni 2005 PE, 2009 PA, XE2 PA
|