Page 1 of 1

Base64Decoder Returns an empty string

Posted: Thu Mar 12, 2020 9:25 am
by souk
In a string encoded in urlencode, purebasic returns an empty string, under other conditions, decoding occurs correctly.

Code: Select all

Procedure.s DecodeOnlyBase64(Text$)
       Protected *memDecod = AllocateMemory(Len(Text$))
      Base64Decoder(Text$, *memDecod, Len(Text$))
      Text$= PeekS(*memDecod , -1, #PB_UTF8)
      FreeMemory(*memDecod)
   ProcedureReturn Text$
 EndProcedure 
 
 st.s= "AAskAAAAAAATX2Zsb2F0JTNCV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMlM0JXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMlM0JXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiJTNCV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyUzQldFQkdMX2RlYnVnX3NoYWRlcnMlM0JXRUJHTF9kZXB0aF90ZXh0dXJlJTNCV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUlM0JXRUJHTF9kcmF3X2J1ZmZlcnMlM0JXRUJHTF9sb3NlX2NvbnRleHQlM0JXRUJLSVRfV0VCR0xfbG9zZV9jb250ZXh0JTIyJTJDJTIyYWxpYXNlZGxpbmV3aWR0aHJhbmdlJTIyJTNBJTIyJTVCMSUyQzElNUQlMjIlMkMlMjJhbGlhc2VkcG9pbnRzaXplcmFuZ2UlMjIlM0ElMjIlNUIxJTJDMTAyNCU1RCUyMiUyQyUyMmFscGhhYml0cyUyMiUzQTglMkMlMjJhbnRpYWxpYXNpbmclMjIlM0ElMjJ5ZXMlMjIlMkMlMjJibHVlYml0cyUyMiUzQTglMkMlMjJkZXB0aGJpdHMlMjIlM0EyNCUyQyUyMmdyZWVuYml0cyUyMiUzQTglMkMlMjJtYXhhbmlzb3Ryb3B5JTIyJTNBMTYlMkMlMjJtYXhjb21iaW5lZHRleHR1cmVpbWFnZXVuaXRzJTIyJTNBMzIlMkMlMjJtYXhjdWJlbWFwdGV4dHVyZXNpemUlMjIlM0ExNjM4NCUyQyUyMm1heGZyYWdtZW50dW5pZm9ybXZlY3RvcnMlMjIlM0ExMDI0JTJDJTIybWF4cmVuZGVyYnVmZmVyc2l6ZSUyMiUzQTE2Mzg0JTJDJTIybWF4dGV4dHVyZWltYWdldW5pdHMlMjIlM0ExNiUyQyUyMm1heHRleHR1cmVzaXplJTIyJTNBMTYzODQlMkMlMjJtYXh2YXJ5aW5ndmVjdG9ycyUyMiUzQTMwJTJDJTIybWF4dmVydGV4YXR0cmlicyUyMiUzQTE2JTJDJTIybWF4dmVydGV4dGV4dHVyZWltYWdldW5pdHMlMjIlM0ExNiUyQyUyMm1heHZlcnRleHVuaWZvcm12ZWN0b3JzJTIyJTNBNDA5NiUyQyUyMm1heHZpZXdwb3J0ZGltcyUyMiUzQSUyMiU1QjMyNzY3JTJDMzI3NjclNUQlMjIlMkMlMjJyZWRiaXRzJTIyJTNBOCUyQyUyMnJlbmRlcmVyJTIyJTNBJTIyV2ViS2l0V2ViR0wlMjIlMkMlMjJzaGFkaW5nbGFuZ3VhZ2V2ZXJzaW9uJTIyJTNBJTIyV2ViR0xHTFNMRVMxLjAoT3BlbkdMRVNHTFNMRVMxLjBDaHJvbWl1bSklMjIlMkMlMjJzdGVuY2lsYml0cyUyMiUzQTAlMkMlMjJ2ZW5kb3IlMjIlM0ElMjJXZWJLaXQlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyV2ViR0wxLjAoT3BlbkdMRVMyLjBDaHJvbWl1bSklMjIlMkMlMjJ2ZXJ0ZXhzaGFkZXJoaWdoZmxvYXRwcmVjaXNpb24lMjIlM0EyMyUyQyUyMnZlcnRleHNoYWRlcmhpZ2hmbG9hdHByZWNpc2lvbnJhbmdlTWluJTIyJTNBMTI3JTJDJTIydmVydGV4c2hhZGVyaGlnaGZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJtZWRpdW1mbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIydmVydGV4c2hhZGVybWVkaXVtZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMnZlcnRleHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJsb3dmbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIydmVydGV4c2hhZGVybG93ZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMnZlcnRleHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmhpZ2hmbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIyZnJhZ21lbnRzaGFkZXJoaWdoZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMmZyYWdtZW50c2hhZGVyaGlnaGZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9uJTIyJTNBMjMlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9uJTIyJTNBMjMlMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJoaWdoaW50cHJlY2lzaW9uJTIyJTNBMCUyQyUyMnZlcnRleHNoYWRlcmhpZ2hpbnRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTMxJTJDJTIydmVydGV4c2hhZGVyaGlnaGludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJ2ZXJ0ZXhzaGFkZXJtZWRpdW1pbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIydmVydGV4c2hhZGVybWVkaXVtaW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMnZlcnRleHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJ2ZXJ0ZXhzaGFkZXJsb3dpbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIydmVydGV4c2hhZGVybG93aW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMnZlcnRleHNoYWRlcmxvd2ludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJmcmFnbWVudHNoYWRlcmhpZ2hpbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIyZnJhZ21lbnRzaGFkZXJoaWdoaW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMmZyYWdtZW50c2hhZGVyaGlnaGludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbiUyMiUzQTAlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWluJTIyJTNBMzElMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkM"
 Debug DecodeOnlyBase64(st)

Re: Base64Decoder Returns an empty string

Posted: Thu Mar 12, 2020 9:48 am
by firace
That's because your data starts with some null bytes, which immediately terminate the string:

Code: Select all

Procedure.s DecodeOnlyBase64(Text$)
       Protected *memDecod = AllocateMemory(StringByteLength(Text$))
      Base64Decoder(Text$, *memDecod, StringByteLength(Text$))
      result$= PeekS(*memDecod , -1, #PB_UTF8)
      ShowMemoryViewer(*memDecod,1024)
      FreeMemory(*memDecod)
   ProcedureReturn result$
 EndProcedure 
 
 st.s= "AAskAAAAAAATX2Zsb2F0JTNCV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMlM0JXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMlM0JXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiJTNCV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyUzQldFQkdMX2RlYnVnX3NoYWRlcnMlM0JXRUJHTF9kZXB0aF90ZXh0dXJlJTNCV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUlM0JXRUJHTF9kcmF3X2J1ZmZlcnMlM0JXRUJHTF9sb3NlX2NvbnRleHQlM0JXRUJLSVRfV0VCR0xfbG9zZV9jb250ZXh0JTIyJTJDJTIyYWxpYXNlZGxpbmV3aWR0aHJhbmdlJTIyJTNBJTIyJTVCMSUyQzElNUQlMjIlMkMlMjJhbGlhc2VkcG9pbnRzaXplcmFuZ2UlMjIlM0ElMjIlNUIxJTJDMTAyNCU1RCUyMiUyQyUyMmFscGhhYml0cyUyMiUzQTglMkMlMjJhbnRpYWxpYXNpbmclMjIlM0ElMjJ5ZXMlMjIlMkMlMjJibHVlYml0cyUyMiUzQTglMkMlMjJkZXB0aGJpdHMlMjIlM0EyNCUyQyUyMmdyZWVuYml0cyUyMiUzQTglMkMlMjJtYXhhbmlzb3Ryb3B5JTIyJTNBMTYlMkMlMjJtYXhjb21iaW5lZHRleHR1cmVpbWFnZXVuaXRzJTIyJTNBMzIlMkMlMjJtYXhjdWJlbWFwdGV4dHVyZXNpemUlMjIlM0ExNjM4NCUyQyUyMm1heGZyYWdtZW50dW5pZm9ybXZlY3RvcnMlMjIlM0ExMDI0JTJDJTIybWF4cmVuZGVyYnVmZmVyc2l6ZSUyMiUzQTE2Mzg0JTJDJTIybWF4dGV4dHVyZWltYWdldW5pdHMlMjIlM0ExNiUyQyUyMm1heHRleHR1cmVzaXplJTIyJTNBMTYzODQlMkMlMjJtYXh2YXJ5aW5ndmVjdG9ycyUyMiUzQTMwJTJDJTIybWF4dmVydGV4YXR0cmlicyUyMiUzQTE2JTJDJTIybWF4dmVydGV4dGV4dHVyZWltYWdldW5pdHMlMjIlM0ExNiUyQyUyMm1heHZlcnRleHVuaWZvcm12ZWN0b3JzJTIyJTNBNDA5NiUyQyUyMm1heHZpZXdwb3J0ZGltcyUyMiUzQSUyMiU1QjMyNzY3JTJDMzI3NjclNUQlMjIlMkMlMjJyZWRiaXRzJTIyJTNBOCUyQyUyMnJlbmRlcmVyJTIyJTNBJTIyV2ViS2l0V2ViR0wlMjIlMkMlMjJzaGFkaW5nbGFuZ3VhZ2V2ZXJzaW9uJTIyJTNBJTIyV2ViR0xHTFNMRVMxLjAoT3BlbkdMRVNHTFNMRVMxLjBDaHJvbWl1bSklMjIlMkMlMjJzdGVuY2lsYml0cyUyMiUzQTAlMkMlMjJ2ZW5kb3IlMjIlM0ElMjJXZWJLaXQlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyV2ViR0wxLjAoT3BlbkdMRVMyLjBDaHJvbWl1bSklMjIlMkMlMjJ2ZXJ0ZXhzaGFkZXJoaWdoZmxvYXRwcmVjaXNpb24lMjIlM0EyMyUyQyUyMnZlcnRleHNoYWRlcmhpZ2hmbG9hdHByZWNpc2lvbnJhbmdlTWluJTIyJTNBMTI3JTJDJTIydmVydGV4c2hhZGVyaGlnaGZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJtZWRpdW1mbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIydmVydGV4c2hhZGVybWVkaXVtZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMnZlcnRleHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJsb3dmbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIydmVydGV4c2hhZGVybG93ZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMnZlcnRleHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmhpZ2hmbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIyZnJhZ21lbnRzaGFkZXJoaWdoZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMmZyYWdtZW50c2hhZGVyaGlnaGZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9uJTIyJTNBMjMlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9uJTIyJTNBMjMlMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJoaWdoaW50cHJlY2lzaW9uJTIyJTNBMCUyQyUyMnZlcnRleHNoYWRlcmhpZ2hpbnRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTMxJTJDJTIydmVydGV4c2hhZGVyaGlnaGludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJ2ZXJ0ZXhzaGFkZXJtZWRpdW1pbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIydmVydGV4c2hhZGVybWVkaXVtaW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMnZlcnRleHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJ2ZXJ0ZXhzaGFkZXJsb3dpbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIydmVydGV4c2hhZGVybG93aW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMnZlcnRleHNoYWRlcmxvd2ludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJmcmFnbWVudHNoYWRlcmhpZ2hpbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIyZnJhZ21lbnRzaGFkZXJoaWdoaW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMmZyYWdtZW50c2hhZGVyaGlnaGludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbiUyMiUzQTAlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWluJTIyJTNBMzElMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkM"
 Debug DecodeOnlyBase64(st)

Re: Base64Decoder Returns an empty string

Posted: Thu Mar 12, 2020 10:24 am
by souk
How can we fix this?
In many lines there are zero bytes and each time the number is different, can eat with force to decode despite these bytes?
Thank you!

Re: Base64Decoder Returns an empty string

Posted: Thu Mar 12, 2020 10:34 am
by firace
If your responses always start with the same fixed-size byte pattern, you could just skip the initial bytes when decoding, like this:

Code: Select all

Procedure.s DecodeOnlyBase64(Text$)
       Protected *memDecod = AllocateMemory(StringByteLength(Text$))
      Base64Decoder(Text$, *memDecod, StringByteLength(Text$))
      result$= PeekS(*memDecod+9 , -1, #PB_UTF8)
      ShowMemoryViewer(*memDecod,1024)
      FreeMemory(*memDecod)
   ProcedureReturn result$
 EndProcedure 
 
 st.s= "AAskAAAAAAATX2Zsb2F0JTNCV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMlM0JXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMlM0JXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiJTNCV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyUzQldFQkdMX2RlYnVnX3NoYWRlcnMlM0JXRUJHTF9kZXB0aF90ZXh0dXJlJTNCV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUlM0JXRUJHTF9kcmF3X2J1ZmZlcnMlM0JXRUJHTF9sb3NlX2NvbnRleHQlM0JXRUJLSVRfV0VCR0xfbG9zZV9jb250ZXh0JTIyJTJDJTIyYWxpYXNlZGxpbmV3aWR0aHJhbmdlJTIyJTNBJTIyJTVCMSUyQzElNUQlMjIlMkMlMjJhbGlhc2VkcG9pbnRzaXplcmFuZ2UlMjIlM0ElMjIlNUIxJTJDMTAyNCU1RCUyMiUyQyUyMmFscGhhYml0cyUyMiUzQTglMkMlMjJhbnRpYWxpYXNpbmclMjIlM0ElMjJ5ZXMlMjIlMkMlMjJibHVlYml0cyUyMiUzQTglMkMlMjJkZXB0aGJpdHMlMjIlM0EyNCUyQyUyMmdyZWVuYml0cyUyMiUzQTglMkMlMjJtYXhhbmlzb3Ryb3B5JTIyJTNBMTYlMkMlMjJtYXhjb21iaW5lZHRleHR1cmVpbWFnZXVuaXRzJTIyJTNBMzIlMkMlMjJtYXhjdWJlbWFwdGV4dHVyZXNpemUlMjIlM0ExNjM4NCUyQyUyMm1heGZyYWdtZW50dW5pZm9ybXZlY3RvcnMlMjIlM0ExMDI0JTJDJTIybWF4cmVuZGVyYnVmZmVyc2l6ZSUyMiUzQTE2Mzg0JTJDJTIybWF4dGV4dHVyZWltYWdldW5pdHMlMjIlM0ExNiUyQyUyMm1heHRleHR1cmVzaXplJTIyJTNBMTYzODQlMkMlMjJtYXh2YXJ5aW5ndmVjdG9ycyUyMiUzQTMwJTJDJTIybWF4dmVydGV4YXR0cmlicyUyMiUzQTE2JTJDJTIybWF4dmVydGV4dGV4dHVyZWltYWdldW5pdHMlMjIlM0ExNiUyQyUyMm1heHZlcnRleHVuaWZvcm12ZWN0b3JzJTIyJTNBNDA5NiUyQyUyMm1heHZpZXdwb3J0ZGltcyUyMiUzQSUyMiU1QjMyNzY3JTJDMzI3NjclNUQlMjIlMkMlMjJyZWRiaXRzJTIyJTNBOCUyQyUyMnJlbmRlcmVyJTIyJTNBJTIyV2ViS2l0V2ViR0wlMjIlMkMlMjJzaGFkaW5nbGFuZ3VhZ2V2ZXJzaW9uJTIyJTNBJTIyV2ViR0xHTFNMRVMxLjAoT3BlbkdMRVNHTFNMRVMxLjBDaHJvbWl1bSklMjIlMkMlMjJzdGVuY2lsYml0cyUyMiUzQTAlMkMlMjJ2ZW5kb3IlMjIlM0ElMjJXZWJLaXQlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyV2ViR0wxLjAoT3BlbkdMRVMyLjBDaHJvbWl1bSklMjIlMkMlMjJ2ZXJ0ZXhzaGFkZXJoaWdoZmxvYXRwcmVjaXNpb24lMjIlM0EyMyUyQyUyMnZlcnRleHNoYWRlcmhpZ2hmbG9hdHByZWNpc2lvbnJhbmdlTWluJTIyJTNBMTI3JTJDJTIydmVydGV4c2hhZGVyaGlnaGZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJtZWRpdW1mbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIydmVydGV4c2hhZGVybWVkaXVtZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMnZlcnRleHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJsb3dmbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIydmVydGV4c2hhZGVybG93ZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMnZlcnRleHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmhpZ2hmbG9hdHByZWNpc2lvbiUyMiUzQTIzJTJDJTIyZnJhZ21lbnRzaGFkZXJoaWdoZmxvYXRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTEyNyUyQyUyMmZyYWdtZW50c2hhZGVyaGlnaGZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9uJTIyJTNBMjMlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWZsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9uJTIyJTNBMjMlMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0ExMjclMkMlMjJmcmFnbWVudHNoYWRlcmxvd2Zsb2F0cHJlY2lzaW9ucmFuZ2VNYXglMjIlM0ExMjclMkMlMjJ2ZXJ0ZXhzaGFkZXJoaWdoaW50cHJlY2lzaW9uJTIyJTNBMCUyQyUyMnZlcnRleHNoYWRlcmhpZ2hpbnRwcmVjaXNpb25yYW5nZU1pbiUyMiUzQTMxJTJDJTIydmVydGV4c2hhZGVyaGlnaGludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJ2ZXJ0ZXhzaGFkZXJtZWRpdW1pbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIydmVydGV4c2hhZGVybWVkaXVtaW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMnZlcnRleHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJ2ZXJ0ZXhzaGFkZXJsb3dpbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIydmVydGV4c2hhZGVybG93aW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMnZlcnRleHNoYWRlcmxvd2ludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJmcmFnbWVudHNoYWRlcmhpZ2hpbnRwcmVjaXNpb24lMjIlM0EwJTJDJTIyZnJhZ21lbnRzaGFkZXJoaWdoaW50cHJlY2lzaW9ucmFuZ2VNaW4lMjIlM0EzMSUyQyUyMmZyYWdtZW50c2hhZGVyaGlnaGludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbiUyMiUzQTAlMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWluJTIyJTNBMzElMkMlMjJmcmFnbWVudHNoYWRlcm1lZGl1bWludHByZWNpc2lvbnJhbmdlTWF4JTIyJTNBMzAlMkM"
 Debug DecodeOnlyBase64(st)

Re: Base64Decoder Returns an empty string

Posted: Thu Mar 12, 2020 10:53 am
by souk
Thank you very much!
If the strings do not always start with zero bytes, the response from the server is chaotic in general, as in this case?

Re: Base64Decoder Returns an empty string

Posted: Thu Mar 12, 2020 2:53 pm
by HeX0R
I don't think this has anything to do with "chaotic", for me it looks like there is some kind of binary header before the string.
But shouldn't you know best the structure of this stream?

Re: Base64Decoder Returns an empty string

Posted: Fri Mar 13, 2020 8:48 pm
by helpy
souk wrote:In a string encoded in urlencode, purebasic returns an empty string, under other conditions, decoding occurs correctly.
You can not decode with Base64Decoder what was encoded with URLEncoder!