Base64Decoder

Anfängerfragen zum Programmieren mit PureBasic.
Andi
Beiträge: 67
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Base64Decoder

Beitrag von Andi »

Ich habe mal eine Frage zum Decoder-Beispiel aus der Hilfe. Dort steht mehr oder weniger:

Code: Alles auswählen

*DecodedBuffer = AllocateMemory(1024)
Base64Decoder(encoded$, *DecodedBuffer, 1024)
decoded$ = PeekS(*DecodedBuffer, -1, #PB_UTF8) 
Warum 1024? Gibt es einen Zusammenhang mit der Länge von encoded$, also des zu dekodierenden Inhalts?
Wenn ja, dann würde ich doch Folgendes als Beispiel-Code erwarten:

Code: Alles auswählen

*DecodedBuffer = AllocateMemory(len(encoded$))
Base64Decoder(encoded$, *DecodedBuffer, len(encoded$))
decoded$ = PeekS(*DecodedBuffer, -1, #PB_UTF8) 
Oder sehe ich das falsch?
PB + B4A = greatest tools on earth
Win 7 | PB 5.30
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6840
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Base64Decoder

Beitrag von STARGÅTE »

Die 1024 ist an dieser Stelle willkürlich.
Wichtig ist nur, der dekodierte Puffer muss mindestens 64 Byte sein und darf bis zu 33% kleiner sein als der codierte Puffer.
Das bezieht sich doch auf die Byte-Länge. Beachte dass Strings in PureBasic im UTF-16 Format gespeichert sind, also jeder Buchstabe immer 2 Bytes einnimmt.

Wenn, dann wäre es wohl so am sichersten:

Code: Alles auswählen

*DecodedBuffer = AllocateMemory(StringByteLength(encoded$)*0.67 + 64)
Base64Decoder(encoded$, *DecodedBuffer, MemorySize(*DecodedBuffer))
PB 5.73 ― Win 10, 20H2 ― Ryzen 9 3900X ― Radeon RX 5600 XT ITX ― Vivaldi 4.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Andi
Beiträge: 67
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Re: Base64Decoder

Beitrag von Andi »

@STARGATE: Danke für Deine Antwort!
Wenn die Zahl 1024 willkürlich ist, dann kann ich also auch den Inhalt einer Textdatei mit - sagen wir mal - 4 KB Dateigröße unter Verwendung der Zahl 1024 dekodieren?
PB + B4A = greatest tools on earth
Win 7 | PB 5.30
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8417
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 20.10
NVIDIA Quadro P2200
Wohnort: Saarbrücken
Kontaktdaten:

Re: Base64Decoder

Beitrag von NicTheQuick »

Nein, die 1024 funktioniert nur in dem Beispiel aus der Hilfe, weil der Text dort besonders kurz ist und niemals mehr als 1024 Bytes im dekodierten Zustand haben wird. Eine dekodierte 4KB Textdatei passt natürlich nicht in 1024 Bytes.
Bild
Andi
Beiträge: 67
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Re: Base64Decoder

Beitrag von Andi »

Okay. Danke!
PB + B4A = greatest tools on earth
Win 7 | PB 5.30
Antworten