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();
}
}
}