That's because that function is meant to convert pointer addresses into hexadecimal notation. What you see is a representation of the address of "data" String. What you need is HexEncode/HexDecode:
CONSOLE_APP_MAIN
{
StdLogSetup(LOG_COUT|LOG_FILE);
String s = "A";
RLOG(s);
RLOG(FormatHex(~s)); // Converts the pointer address to hex.
RLOG(FormatHex(s.ToStd().c_str())); // Converts the pointer address to hex.
RLOG("---");
RLOG(HexEncode(s)); // Encodes the *content* of Strings into hex.
RLOG(HexEncode(s.ToStd().c_str())); // The same...
}