Einzelnen Beitrag anzeigen

Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#1

Base64 to RawByteString

  Alt 14. Jul 2020, 12:45
Hi zusammen,

ich habe im Moment in etwa folgende Funktion:
Delphi-Quellcode:
class procedure TSuper_Api.DoDecode(
  const sBase64Daten : String;
  var rawData : RawByteString
);
var
  baseStream : TStringStream; // Base64-codiert
  tempStream : TStringStream; // Ergebnis
begin
  SetLength(rawData, 0); // Nur zur Sicherheit
  tempStream := TStringStream.Create(); // Ergebnis
  try
    baseStream := TStringStream.Create(sBase64Daten);
    tempStream.Clear();
    try
      TNetEncoding.Base64.Decode(baseStream, tempStream);
      rawData := RawByteString(tempStream.DataString);
    finally
      baseStream.Free();
    end;
  finally
    tempStream.Free();
  end;
end;
Das funktioniert wunderbar, aber der cast von "RawByteString(tempStream.DataString)"
erscheint mir falsch. Ich habe zumindest das Gefühl, dass ich noch was "falsch" mache
oder zumindestens "nicht schön".
Die Lösung mit den StringStreams ist ja so wunderbar einfach und wie gesagt
funktioniert das ja auch alles, aber es gibt dafür doch sicherlich einen
"richtigeren" Weg!? Geht da was über den MemoryStream? Oder hat der StringStream
Funktionen um die "Daten" als RawByteString abzugreifen, vielleicht über "tempStream.Bytes"?
Ich hoffe ihr wisst, was ich meine!

Liebe Grüße und danke schonmal für's lesen!
Incocnito
  Mit Zitat antworten Zitat