Skip to content

Instantly share code, notes, and snippets.

@kadukf
Created April 23, 2020 19:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kadukf/292aa3716ea6784e541eb6c4fffd14d8 to your computer and use it in GitHub Desktop.
Save kadukf/292aa3716ea6784e541eb6c4fffd14d8 to your computer and use it in GitHub Desktop.
WebEncoders
public static string UsingWebEncoders(string input)
{
byte[] inputBytes = null;
char[] outputChars = null;
try
{
var minimumLength = Encoding.UTF8.GetByteCount(input);
inputBytes = ArrayPool<byte>.Shared.Rent(minimumLength);
int inputBytesCount = Encoding.UTF8.GetBytes(input, 0, input.Length, inputBytes, 0);
var outputSize = WebEncoders.GetArraySizeRequiredToEncode(inputBytesCount);
outputChars = ArrayPool<char>.Shared.Rent(outputSize);
var charsSize = WebEncoders.Base64UrlEncode(inputBytes, 0, outputChars, 0, inputBytesCount);
return new string(outputChars, 0, charsSize);
}
finally
{
if (inputBytes != null) ArrayPool<byte>.Shared.Return(inputBytes);
if (outputChars != null) ArrayPool<char>.Shared.Return(outputChars);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment