public static void Main()
var encoded = AlphabetTest.Encode(id);
Console.WriteLine(id + " : " + encoded);
for (var i = 0; i < 10000000; i++)
if (AlphabetTest.Decode(AlphabetTest.Encode(i)) != i)
System.Console.WriteLine("{0} is not {1}", AlphabetTest.Encode(i), i);
public class AlphabetTest
public static readonly string Alphabet = "bcdefghjklmnopqrstvwxyzBCDEFGHJKLMNOPQRSTVWXYZ0123456789";
public static readonly long Base = Alphabet.Length;
public static string Encode(long i)
if (i == 0) return Alphabet[0].ToString();
s += Alphabet[(int)(i % Base)];
return string.Join(string.Empty, ReverseString(s));
public static long Decode(string s)
i = (i * Base) + Alphabet.IndexOf(c);
public static string ReverseString(string s)
char[] arr = s.ToCharArray();