namespace Holo { using System; using System.Text; public static class Encoding { public static int decodeB64(string Val) { char[] chArray = Val.ToCharArray(); int num = 0; int num2 = 0; for (int i = chArray.Length - 1; i >= 0; i--) { int num4 = (byte) (chArray[i] - '@'); if (num2 > 0) { num4 *= (int) Math.Pow(64.0, (double) num2); } num += num4; num2++; } return num; } public static int decodeVL64(char[] raw) { try { int index = 0; int num2 = 0; bool flag = (raw[index] & '\x0004') == 4; int num3 = (raw[index] >> 3) & '\a'; num2 = raw[index] & '\x0003'; index++; int num4 = 2; for (int i = 1; i < num3; i++) { num2 |= (raw[index] & 0x3f) << num4; num4 = 2 + (6 * i); index++; } if (flag) { num2 *= -1; } return num2; } catch { return 0; } } public static int decodeVL64(string data) { return decodeVL64(data.ToCharArray()); } public static string encodeB64(string Val) { int length = Val.Length; int num2 = 2; string str = ""; for (int i = 1; i <= num2; i++) { int num4 = 6 * (num2 - i); byte num5 = (byte) (0x40 + ((length >> num4) & 0x3f)); str = str + ((char) num5); } return str; } public static string encodeB64(int value, int length) { string str = ""; for (int i = 1; i <= length; i++) { int num2 = 6 * (length - i); byte num3 = (byte) (0x40 + ((value >> num2) & 0x3f)); str = str + ((char) num3); } return str; } public static string encodeVL64(int i) { byte[] bytes = new byte[6]; int num = 0; int index = num; int num3 = 1; int num4 = (i >= 0) ? 0 : 4; i = Math.Abs(i); bytes[num++] = (byte) (0x40 + (i & 3)); i = i >> 2; while (i != 0) { num3++; bytes[num++] = (byte) (0x40 + (i & 0x3f)); i = i >> 6; } bytes[index] = (byte) ((bytes[index] | (num3 << 3)) | num4); ASCIIEncoding encoding = new ASCIIEncoding(); return encoding.GetString(bytes).Replace("\0", ""); } } }