using System;
|
using System.Collections.Generic;
|
namespace iWareCommon.Utils
|
{
|
public class MyBase64Helper
|
{
|
private static string myBase64Chars = "LMNrstuOPQABCDEF#$%GHIJKmnopqvwxyRSTUVWXYZ~@^&*(abcdefghijklz+-)";
|
|
/// <summary>
|
/// 自定义的将字节码数字转base64的算法
|
/// </summary>
|
/// <param name="bytes"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 自动义的将Base64串转字节码数字
|
/// </summary>
|
/// <param name="bytes"></param>
|
/// <returns></returns>
|
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<byte>();
|
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();
|
}
|
}
|
}
|