Back in my previous post, Converting an int to a binary string, we looked at how to write out the bits of an `int`

without using the existing `Convert.ToString`

method in the .NET Framework. Now, let’s look at the reverse – how to convert that binary string back into an `int`

. The .NET Framework already has a built in method to do this (obviously), which is the `Convert.ToInt32(string, int)`

method. This method takes the binary string and the base to convert from as parameters.

The easiest way that I have found to convert a binary number to decimal is to look at the bits of the binary number and raise 2 to the power of the index of the “on” bits and add those together. I define an “on” bit as a bit that is 1 as opposed to 0.

For example, the binary number `100`

can be looked at as

2

^{2}+ 0 + 0 = 4

Similary, `101`

can be looked at as

2

^{2}+ 0 + 2^{0}= 5

Knowing this, we can then loop through the characters of the binary string, check if the bit is “on” and, if so, add

2

^{[index]}

to resulting `int`

. In the code example below, I first reverse the array to allow the index of our loop (`power`

) match up with the index of the binary string (the power in which we want to raise 2 to).

```
public static int BitStringToInt(string bits)
{
var reversedBits = bits.Reverse().ToArray();
var num = 0;
for (var power = 0; power < reversedBits.Count(); power++)
{
var currentBit = reversedBits[power];
if (currentBit == '1')
{
var currentNum = (int) Math.Pow(2, power);
num += currentNum;
}
}
return num;
}
```