using System;
namespace base58
{
class Program
{
public static String sBase58Alphabet = “123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ”;
static void Main(string[] args)
{
Console.WriteLine(EncodeBase58(3663063759));
Console.WriteLine(DecodeBase58(EncodeBase58(3663063759)));
Console.ReadKey();
}
public static String EncodeBase58(UInt32 numberToShorten)
{
String sConverted = “”;
Int32 iAlphabetLength = sBase58Alphabet.Length;
while (numberToShorten > 0)
{
long lNumberRemainder = (numberToShorten % iAlphabetLength);
numberToShorten = Convert.ToUInt32(numberToShorten / iAlphabetLength);
sConverted = sBase58Alphabet[Convert.ToInt32(lNumberRemainder)] + sConverted;
}
return sConverted;
}
public static long DecodeBase58(String base58StringToExpand)
{
long lConverted = 0;
long lTemporaryNumberConverter = 1;
while (base58StringToExpand.Length > 0)
{
String sCurrentCharacter = base58StringToExpand.Substring(base58StringToExpand.Length - 1);
lConverted = lConverted + (lTemporaryNumberConverter * sBase58Alphabet.IndexOf(sCurrentCharacter));
lTemporaryNumberConverter = lTemporaryNumberConverter * sBase58Alphabet.Length;
base58StringToExpand = base58StringToExpand.Substring(0, base58StringToExpand.Length - 1);
}
return lConverted;
}
}
}