Converting an integer to base 2

Stephen Boulet stephen.boulet at motorola.com
Fri Nov 30 14:50:01 EST 2001


Ah, that  explains why int() fails. Thanks.

Meanwhile, I found this recipe on ActiveState's site:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65212

and I adapted it for my situation.

def decimalToN(num,n=2):
	"""Change a decimal to a base-n number.
	Up to base-36 is supported without special notation."""

	new_num_string=''
	current=num
	while current!=0:
		remainder=current%n
		if remainder>=36:
			remainder_string='('+str(remainder)+')'
		else:
			remainder_string=str(remainder)
		new_num_string=remainder_string+new_num_string
		current=current/n
	while len(new_num_string) < 8:  # want 8 bits, so pad with zeros
		new_num_string = '0' + new_num_string
	return new_num_string

"David R. Smith" wrote:
> 
> int(string, 2) converts the string to the internal representation.  You
> told it that the string was base-2, e.g., '101'.  '5' is not a valid
> digit in binary.
> 
> Stephen Boulet wrote:
> >
> > I'm trying to convert integers to base 2. Can someone tell me why this
> > doesn't work?
> >
> > >>> int('5', 2)
> > Traceback (most recent call last):
> >   File "<pyshell#102>", line 1, in ?
> >     int('5', 2)
> > ValueError: invalid literal for int(): 5
> >
> > Thanks.
> >
> > -- Stephen



More information about the Python-list mailing list