using System; using System.Linq; public class Test { public static void Main() { Console.WriteLine(BaseConvert("8418CFEE73FA22E6AB0760C73A496497C6C347DA88A9F63B95FE1E1D6A350AA1D7D3A9EE870795AECC3C109AA8B4A78C", 16, 36)); } public static string BaseConvert(string number, int fromBase, int toBase) { var digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var length = number.Length; var result = string.Empty; var nibbles = number.Select(c => digits.IndexOf(c)).ToList(); int newlen; do { var value = 0; newlen = 0; for (var i = 0; i < length; ++i) { value = value * fromBase + nibbles[i]; if (value >= toBase) { if (newlen == nibbles.Count) { nibbles.Add(0); } nibbles[newlen++] = value / toBase; value %= toBase; } else if (newlen > 0) { if (newlen == nibbles.Count) { nibbles.Add(0); } nibbles[newlen++] = 0; } } length = newlen; result = digits[value] + result; // } while (newlen != 0); return result; } }