Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here's some code that'll convert an integer to an arbitrary base up to 36, and convert a string representation of a base x value to an integer (given the base):</p> <pre><code>class Program { static void Main(string[] args) { int b10 = 123; int targetBase = 5; string converted = ConvertToBase(b10, targetBase); int convertedBack = ConvertFromBase(converted, targetBase); string base3 = "212210"; string base7 = ConvertFromBaseToBase(base3, 3, 7); Console.WriteLine(converted); Console.WriteLine(convertedBack); Console.WriteLine(base7); Console.ReadLine(); } private const string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static string ConvertToBase(int b10, int targetBase) { if (targetBase &lt; 2) throw new ArgumentException("Target base must be greater than 2.", "targetBase"); if (targetBase &gt; 36) throw new ArgumentException("Target base must be less than 36.", "targetBase"); if (targetBase == 10) return b10.ToString(); StringBuilder result = new StringBuilder(); while (b10 &gt;= targetBase) { int mod = b10 % targetBase; result.Append(chars[mod]); b10 = b10 / targetBase; } result.Append(chars[b10]); return Reverse(result.ToString()); } private static int ConvertFromBase(string bx, int fromBase) { if (fromBase &lt; 2) throw new ArgumentException("Base must be greater than 2.", "fromBase"); if (fromBase &gt; 36) throw new ArgumentException("Base must be less than 36.", "fromBase"); if (fromBase == 10) return int.Parse(bx); bx = Reverse(bx); int acc = 0; for (int i = 0; i &lt; bx.Length; i++) { int charValue = chars.IndexOf(bx[i]); acc += (int)Math.Pow(fromBase, i) * charValue; } return acc; } public static string ConvertFromBaseToBase(string bx, int fromBase, int toBase) { int b10 = ConvertFromBase(bx, fromBase); return ConvertToBase(b10, toBase); } public static string Reverse(string s) { char[] charArray = new char[s.Length]; int len = s.Length - 1; for (int i = 0; i &lt;= len; i++) charArray[i] = s[len - i]; return new string(charArray); } } </code></pre> <p>If you're unconcerned with displaying these values, you can use extended characters in your chars set - if you stick to plain ascii, you can theoretically have base256 values. Going beyond that I would recommend not using chars, but instead using some other uniquely-identifiable value - though I don't much see the value.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload