just extends the M4Ns solution to a universal class ....
public class BaseX { private readonly string _digits; public BaseX(string digits) { _digits = digits; } public string ToBaseX(int number) { var output = ""; do { output = _digits[number % _digits.Length] + output; number = number / _digits.Length; } while (number > 0); return output; } public int FromBaseX(string number) { return number.Aggregate(0, (a, c) => a*_digits.Length + _digits.IndexOf(c)); } }
and then you can do ...
var x = new BaseX("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); Console.WriteLine(x.ToBaseX(10)); Console.WriteLine(x.ToBaseX(459123)); Console.WriteLine(x.ToBaseX(63)); Console.WriteLine(x.FromBaseX("1Vrd")); Console.WriteLine(x.FromBaseX("A")); var bin = new BaseX("01"); Console.WriteLine(bin.ToBaseX(10));
source share