Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Base64/ Mime für Dateien

  Alt 13. Sep 2017, 14: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
  Mit Zitat antworten Zitat