# [Tutor] to/from binary to/from integer (i.e.'01010101' = 85)

Todd G. Gardner piir at earthlink.net
Fri Jan 2 14:52:33 EST 2004

```Don,

I am not positive if I should give you the greatly deserved thank you so if
I am wrong I apologize, but THANK YOU.

I thank you SO much for this code.  int and convert functions it seems to
work perfectly all bases that I need!

Thanks again,

Todd
-----Original Message-----
From: don arnold [mailto:darnold02 at sprynet.com]
Sent: Friday, January 02, 2004 12:17 PM
To: Todd G. Gardner; Tutor at Python. Org
Subject: Re: [Tutor] to/from binary to/from integer (i.e.'01010101' =
85)

----- Original Message -----
From: "Todd G. Gardner" <piir at earthlink.net>
To: "Tutor at Python. Org" <tutor at python.org>
Sent: Friday, January 02, 2004 7:43 AM
Subject: [Tutor] to/from binary to/from integer (i.e.'01010101' = 85)

> Hello everyone,
>
> I was wondering if anyone happens to know how to convert to/from binary
> to/from integer (i.e.'01010101' = 85)
>
> Thanks for any pointers,
>
> Todd

The int() function will do the conversion from binary (and other bases)
for you if you supply the optional base parameter:

>>> int('1111111',2)
127
>>> int('001',2)
1
>>> int('17',8)
15

I _thought_ there was a function somewhere to convert an int to a binary
string,
but I couldn't find it. So, here's a function that will convert an int to
string of any
base up to 36:

import string

digits = string.digits + string.ascii_uppercase

def convert(num, base):
res = []

divisor = 1
while num >= divisor * base:
divisor *= base

remainder = num

while divisor >= 1:
index, remainder = divmod(remainder,divisor)
res.append(digits[index])
divisor /= base

res = ''.join(res)

if int(res, base) != num:

return res

if __name__ == '__main__':
while 1:
num = raw_input('number to convert: ')
if num == '':
break
num = int(num)
base = int(raw_input('base             : '))
print '%d in base %d is %s' % (num, base, convert(num,base))
print

[example output:]

number to convert: 255
base             : 2
255 in base 2 is 11111111

number to convert: 255
base             : 16
255 in base 16 is FF

number to convert: 255
base             : 10
255 in base 10 is 255

number to convert: 255
base             : 8
255 in base 8 is 377

number to convert:

HTH,
Don

```