# binary to decimal conversion

Michal Bozon bozon at natur.cuni.cz
Tue Mar 21 15:16:43 CET 2000

```On 18 Mar 2000, Michael Esveldt wrote:

> This morning I wrote a function that takes a binary number as a string
> and converts it to an integer. There must be a way to optimize this
> function, anyone have some tips?
>
> def btoi(num):
>     output = 0
>     col = range(len(num))
>     col.reverse()
>     for bit in range(len(num)):
>         output = output + pow(2,col[bit])*int(num[bit])
>     return output
# - - - - - -
def btoi(num, o="0", i="1"):
def powL(a, e): # can handle BIG numbers (long)
import sys
mi = sys.maxint # maximal value of integer. Higher must be long.
r = 1L
for i in range(e):
r = r*a
if r < mi: return int(r)
return r
c = [o, i]
output = 0
for i in range(len(num)):
output = output+c.index(num[-i-1])*powL(2, i)
# - - - - - -
Without warranty. Reproduced from my brain. (I wrote this func before
a week. This func should handle VERY large strings which yield long
numbers. If the strings conains binary string using other characters e.g.
s = "IOOOIOIOIOOOIOI", you simply use: btoi(s, "O", "I")

regards,
Michal Bozon
Fac.Sci., Chrales Univ., Prague, Czech Rep.
bozon at natur.cuni.cz

>
> Thanks,
> Michael
> _______________________________________________________________
> dante at oz.net - Michael Esveldt - #FightThePower on Openprojects
>
>

```