Seite 1 von 1
Base64 große Dateien
Verfasst: 02.09.2016 09:47
von dam
Hallo,
habe ein Problem mit dem Base64 Encoder.
Und zwar erhalte ich immer einen Fehler sobald ich versuche Daten in einen Zielspeicher größer als 2GB zu enkodieren.
Kann mir jemand vielleicht weiter helfen?
Danke
Re: Base64 große Dateien
Verfasst: 02.09.2016 09:52
von NicTheQuick
Nutzt du die 32-Bit oder die 64-Bit-Version von Purebasic?
Re: Base64 große Dateien
Verfasst: 02.09.2016 10:09
von dam
Die 64 Bit Version
Dieser Code funktioniert
Code: Alles auswählen
src=AllocateMemory(1500000000)
dst=AllocateMemory(2147483647)
Base64Encoder(src, 1500000000, dst,2147483647)
Dieser funktioniert nicht.
Code: Alles auswählen
src=AllocateMemory(1500000000)
dst=AllocateMemory(2147483648)
Base64Encoder(src, 1500000000, dst,2147483648)
Re: Base64 große Dateien
Verfasst: 02.09.2016 10:23
von _JON_
"The specified length is negative", Tja, da ist der Base64Encoder() auf 2GB beschränkt.
Re: Base64 große Dateien
Verfasst: 02.09.2016 10:41
von NicTheQuick
Darf man fragen, was genau du machen willst?
Re: Base64 große Dateien
Verfasst: 02.09.2016 15:12
von RSBasic
Das würde mich auch interessieren, warum man eine große Datei kodieren möchte. Was ist das Ziel deines Vorhabens? Möchtest du sie über das Internet übertragen o.ä.?
Ich weiß zwar nicht, ob Base64Encoder() eine eigene Funktion ist oder ob diese unter Windows auf eine existierende WinAPI-Funktion basiert, aber versuche mal mit folgender WinAPI-Funktion:
CryptBinaryToString_()
Als Parameter entweder #CRYPT_STRING_BASE64 ($00000001) oder #CRYPT_STRING_BASE64HEADER ($00000000) verwenden, ob mit oder ohne Header.
Vielleicht wird da mehr als 2 GB unterstützt.
Viel Glück
Re: Base64 große Dateien
Verfasst: 02.09.2016 19:09
von STARGÅTE
Ich würde eh nicht 2GB "mit einem Rutsch" kodieren.
Einfach in kleine Pakete (vielfaches von 3) zerlegen, und danach wieder zusammen fügen, die Blöcke bauen ja nicht aufeinander auf.