Base64 große Dateien

Für allgemeine Fragen zur Programmierung mit PureBasic.
dam
Beiträge: 2
Registriert: 02.09.2016 09:40

Base64 große Dateien

Beitrag 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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Base64 große Dateien

Beitrag von NicTheQuick »

Nutzt du die 32-Bit oder die 64-Bit-Version von Purebasic?
dam
Beiträge: 2
Registriert: 02.09.2016 09:40

Re: Base64 große Dateien

Beitrag 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)
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Base64 große Dateien

Beitrag von _JON_ »

"The specified length is negative", Tja, da ist der Base64Encoder() auf 2GB beschränkt.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Base64 große Dateien

Beitrag von NicTheQuick »

Darf man fragen, was genau du machen willst?
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Base64 große Dateien

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7035
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Base64 große Dateien

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten