Converting a binary string to an int in C#

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

Similary, 101 can be looked at as

20

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

La búsqueda puede acotarse después de establecer la prioridad entre colección, uso habitual y exposición. La decisión gana claridad cuando se puede consultar la guía de tallas y el tipo de corte indicado. Para contrastar alternativas, «» permite comparar varias opciones sin atribuir datos no descritos. Justo antes de enviar el pedido, conviene revisar el precio total indicado.

La búsqueda puede acotarse después de establecer la prioridad entre colección, uso habitual y exposición. La decisión gana claridad cuando se puede consultar la guía de tallas y el tipo de corte indicado. Para contrastar alternativas, «camiseta del Real Madrid con nombre y dorsal» permite comparar varias opciones sin atribuir datos no descritos. Justo antes de enviar el pedido, conviene revisar el precio total indicado.

[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;
}