Base64 in UE4

While I was looking for projects to contribute to on GitHub I remembered VaRest was on GitHub. I headed over to VaRest's repo and was looking at issues. I found the issue and so I went on my way of finding a solution.

 

My solution for encoding was to convert the input string to utf8 and then encode. My solution for decoding was practically the same, I convert the string to a tchar from utf8, decode, and then output the result. Pretty easy right? Yeah no this solution took me about an hour and I had to get some assistance from an acquaintance, because the encoding was adding extra chars on the end and some other random issues.

FString MyClass::Base64Encode(const FString& Source)

{

	TArray<uint8> ByteArray;

	FTCHARToUTF8 StringSrc = FTCHARToUTF8(Source.GetCharArray().GetData());

	ByteArray.Append((uint8*)StringSrc.Get(), StringSrc.Length());

return FBase64::Encode(ByteArray);

}

// I don’t know why I didn’t change this method to just return the string like the encode string above… bool MyClass::Base64Decode(const FString& Source, FString& Dest) { TArray<uint8> ByteArray; bool Success = FBase64::Decode(Source, ByteArray);

FUTF8ToTCHAR StringSrc = FUTF8ToTCHAR((const ANSICHAR*)ByteArray.GetData(), ByteArray.Num());

Dest.AppendChars(StringSrc.Get(), StringSrc.Length() + 1);



return Success;

}

 

until next time