public static string ToBase64String(this byte[] bytes, Base64Options options = Base64Options.Default) { if (bytes?.Length == 0) { return(string.Empty); } var s = Convert.ToBase64String(bytes); if (options.HasFlag(Base64Options.NoPadding) || options.HasFlag(Base64Options.UrlSafe)) { var idx = s.IndexOf('='); if (idx > 0) { s = s.Substring(0, idx); } } if (options.HasFlag(Base64Options.UrlSafe)) { s = s.Replace('/', '_').Replace('+', '-'); } return(s); }
public static byte[] AsBytesFromBase64(this string s, Base64Options options = Base64Options.Default) { if (string.IsNullOrEmpty(s)) { return(Array.Empty <byte>()); } if (options == Base64Options.Default) { return(Convert.FromBase64String(s)); } if (options.HasFlag(Base64Options.NoPadding) || options.HasFlag(Base64Options.UrlSafe)) { switch (s.Length % 4) { case 2: s += "=="; break; case 3: s += "="; break; } } if (options.HasFlag(Base64Options.UrlSafe)) { s = s.Replace('_', '/').Replace('-', '+'); } return(Convert.FromBase64String(s)); }