Code: Alles auswählen
Procedure.s MyBase64Encoder(*DataBuffer, Bytes)
Protected *Memory = AllocateMemory(Bytes * 1.5 + 64), Size.i
Size = Base64Encoder(*DataBuffer, Bytes, *Memory, 50000)
ProcedureReturn PeekS(*Memory, Size, #PB_Ascii)
EndProcedure
Procedure MyBase64Decoder(StringEncoded$, *Output, OutputSize.i)
Protected EncodedSize.i = StringByteLength(StringEncoded$, #PB_Ascii)
Protected *Memory = AllocateMemory(EncodedSize + 1), Size
PokeS(*Memory, StringEncoded$, EncodedSize, #PB_Ascii)
ProcedureReturn Base64Decoder(*Memory, EncodedSize, *Output, OutputSize)
EndProcedure
Define Crc.q
*FileDataBuffer = AllocateMemory(512)
FileName$ = "D:\Projects\Purebasic\network\103385-1920x1080.jpg"
Fileh = ReadFile(#PB_Any, FileName$)
If Fileh
FileLen = Lof(Fileh)
For I=0 To FileLen Step 512
FileSeek(Fileh, I)
Bytes = ReadData(Fileh, *FileDataBuffer, 512)
Debug CRC32Fingerprint(*FileDataBuffer, Bytes)
;StringEncoded$ = Space(50000)
;enc = Base64Encoder(*FileDataBuffer, Bytes, @StringEncoded$, 50000)
;StringEncoded$ = Left(StringEncoded$, enc)
;StringEncoded$ = PeekS(@StringEncoded$, enc, #PB_Ascii) ; Konvertieren
StringEncoded$ = MyBase64Encoder(*FileDataBuffer, Bytes)
Debug StringEncoded$
*Decode = AllocateMemory(50000)
;Bytes = Base64Decoder(@StringEncoded$, enc, *Decode, 50000)
Bytes = MyBase64Decoder(StringEncoded$, *Decode, 50000)
Debug CRC32Fingerprint(*Decode, Bytes)
CallDebugger
Next
CloseFile(Fileh)
EndIfCode: Alles auswählen
StringEncoded$ = "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAQ4B4ADASIAAhEBAxEB/8QAHQAAAgMBAQEBAQAAAAAAAAAAAwQBAgUABgcICf/EAFcQAAEEAQMCBQIEAwYEBAACGwEAAgMRBBIhMQVBBhMiUWFxgQcUMpFCobEIFSNSwdEWM2JyJIKS4Rc0Q1Oi8PElNWODsglEc4STsyZFo8InNkZUVVZk/8QAHAEAAgMBAQEBAAAAAAAAAAAAAAIBAwQFBgcI/8QAPxEAAgIBBAICAQIEBAUDAgUFAAECEQMEEiExBUETUSIUYQYycYEVI0KRUqGxwdEz4fAkYhY1Q3LxJTREU4L/2gAMAwEAAhEDEQA/APsQNqzRVlQG3wFYA9wnGJbq5KOzuqNaDyjNj43Ssj2Xa2gN0Zh3v2QwCO9orANKgYMxoPIVwDxSiHkXwmWgVuEADbG4bozWgcKQCeAraa3SsCwdvwrijyFRtbEohA5CgZE6R7/ZXbXbshg="
*Encode = AllocateMemory(StringByteLength(StringEncoded$, #PB_Ascii) + 1)
PokeS(*Encode, StringEncoded$, StringByteLength(StringEncoded$, #PB_Ascii), #PB_Ascii)
CRC.q = CRC32Fingerprint(*Encode, StringByteLength(StringEncoded$, #PB_Ascii))
Debug CRC ; 2364089344
*Decode = AllocateMemory(50000)
Bytes = Base64Decoder(*Encode, StringByteLength(StringEncoded$, #PB_Ascii), *Decode, 50000)
CRC.q = CRC32Fingerprint(*Decode, Bytes)
Debug CRC ; 3341594285