I tried to decode a Base64 encoding of an image, but it didn't work. Where is the mistake?
Thanks!
Code: Select all
Base64Char := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Base64Index(c)
{
Global Base64Char
return InStr(Base64Char, c, CaseSensitive) - 1
}
Base64Decode(str, ByRef Bytes)
{
Bytes := 0
str := StrReplace(str, "=")
Loop Parse, str
{
if Mod(A_Index, 4) = 1
buffer := Base64Index(A_LoopField) << 18
else If Mod(A_Index, 4) = 2
{
buffer += Base64Index(A_LoopField) << 12
++Bytes
}
else If Mod(A_Index, 4) = 3
{
buffer += Base64Index(A_LoopField) << 6
++Bytes
}
else
{
buffer += Base64Index(A_LoopField)
r := r << 24 + buffer
++Bytes
}
}
if Mod(StrLen(code),4) = 0
return r
if Mod(StrLen(code),4) = 2
return r << 8 + buffer >> 16
return r << 16 + buffer >> 8
}
Base64Str := "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAACAAIDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAG/B//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQ8//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z"
Var := Base64Decode(Base64Str, Bytes)
File := FileOpen("test.jpg", "w")
File.RawWrite(Var, Bytes)
File.Close()
return