using System; using System.Collections.Generic; namespace iWareCommon.Utils { public class MyBase64Helper { private static string myBase64Chars = "LMNrstuOPQABCDEF#$%GHIJKmnopqvwxyRSTUVWXYZ~@^&*(abcdefghijklz+-)"; /// /// 自定义的将字节码数字转base64的算法 /// /// /// public static string ToBase64String(byte[] bytes) { var str = ""; foreach (var b in bytes) { str += Convert.ToString(b,2).PadLeft(8,'0');} var nb = str.Length % 6; if(nb > 0) {nb = 6 - nb;} str += "".PadLeft(nb, '0'); var res = ""; for (var i = 0; i < str.Length; i += 6) { var subStr = str.Substring(i, 6); var index = Convert.ToByte(subStr, 2); res += myBase64Chars[index]; } res += "".PadLeft(nb, '='); return res; } /// /// 自动义的将Base64串转字节码数字 /// /// /// public static byte[] ToBytes(string str) { var nb = 0; var p = str.IndexOf('='); if (p > -1) { nb = str.Length - p; } var t = ""; for (var i = 0; i < str.Length - nb; i++) { var ind = myBase64Chars.IndexOf(str[i]); t += Convert.ToString(ind, 2).PadLeft(6, '0'); } var bytes = new List(); for (var i = 0; i < t.Length - nb; i += 8) { var subStr = t.Substring(i, 8); bytes.Add(Convert.ToByte(subStr, 2)); } return bytes.ToArray(); } } }