Revision: 9484
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 9, 2008 19:05 by dreamlusion
Initial Code
using System;
namespace BaseConversion
{
public static class BaseTransformations
{
private const int DecimalRadix = 10;
private const int MaxBit = 32;
private static char[] _hexChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
private static int[] _hexValues = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
public static int BaseToDecimal(string completeHex, int radix)
{
int value = 0;
int product = 1;
for (int i = completeHex.Length - 1; i >= 0; i--, product = product * radix)
{
char hex = completeHex[i];
int hexValue = -1;
for (int j = 0; j < _hexChars.Length - 1; j++)
{
if (_hexChars[j] == hex)
{
hexValue = _hexValues[j];
break;
}
}
value += (hexValue * product);
}
return value;
}
public static string DecimalToBase(int decimalValue, int radix)
{
string completeHex = "";
int[] remainders = new int[MaxBit];
int maxBit = MaxBit;
for (; decimalValue > 0; decimalValue = decimalValue / radix)
{
maxBit = maxBit - 1;
remainders[maxBit] = decimalValue % radix;
}
for (int i = 0; i < remainders.Length; i++)
{
int value = remainders[i];
if (value >= DecimalRadix)
{
completeHex += _hexChars[value % DecimalRadix];
}
else
{
completeHex += value;
}
}
completeHex = completeHex.TrimStart(new char[] { '0' });
return completeHex;
}
}
}
Initial URL
Initial Description
Description of the implementation can be found [here](http://pages.cs.wisc.edu/~markhill/cs354/Fall2008/notes/numbers.html).
Initial Title
Base Conversion Algorithm (Decimal to Hex, Decimal to Bin, Hex to Decimal, Bin to Decimal, e.t.c.)
Initial Tags
Initial Language
C#