Rich
BAN USERstatic void Base2To4(byte[] base2)
{
int pos = base2.Length - 1;
int base4 = 0;
int positionPower = 10;
while (pos >= 0)
{
if (base2[pos] > 1) throw new InvalidOperationException();
int value = base2[pos] == 0 ? 0 : 1;
if (pos > 0)
{
if (base2[pos - 1] > 1) throw new InvalidOperationException();
value += base2[pos - 1] == 0 ? 0 : 2;
}
if (base4 == 0)
base4 = value;
else
{
base4 += value * positionPower;
positionPower *= 10;
}
pos -= 2;
}
Console.WriteLine(base4);
}
- Rich August 17, 2013