using System;
using System.Collections;
public static class HTTPUtility
{
#region Base64
// Adapted from example at: http://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/Base64#Java
public static string ConvertToBase64String(byte[] inArray)
{
// Base 64 character set
const string base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
// Result and padding strings
string r = string.Empty;
string p = string.Empty;
// Zero pad the array if necessary
int c = inArray.Length % 3;
if (c > 0)
{
int addedChars = 3 - c;
p = new string('=', addedChars);
byte[] newArray = new byte[inArray.Length + addedChars];
inArray.CopyTo(newArray, 0);
inArray = newArray;
}
// Convert the input array
for (int i = 0; i < inArray.Length; i += 3)
{
// Add a newline character if necessary
if (i > 0 && (i / 3 * 4) % 76 == 0)
r += "\r\n";
// Three bytes become one 24-bit number
int n = (inArray[i] << 16) + (inArray[i + 1] << 8) + (inArray[i + 2]);
// 24-bit number gets split into four 6-bit numbers
int n1 = (n >> 18) & 63;
int n2 = (n >> 12) & 63;
int n3 = (n >> 6) & 63;
int n4 = n & 63;
// Use the four 6-bit numbers as indices for the base64 character list
r = string.Concat(r, base64Chars[n1], base64Chars[n2], base64Chars[n3], base64Chars[n4]);
}
return r.Substring(0, r.Length - p.Length) + p;
}
#endregion
}