On May 17, 6:45 pm, Lyosha <[EMAIL PROTECTED]> wrote:
> On May 17, 4:40 pm, Michael Bentley <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
> > On May 17, 2007, at 6:33 PM, Lyosha wrote:
>
> > > Converting binary to base 10 is easy:
> > >>>> int('11111111', 2)
> > > 255
>
> > > Converting base 10 number to hex or octal is easy:
> > >>>> oct(100)
> > > '0144'
> > >>>> hex(100)
> > > '0x64'
>
> > > Is there an *easy* way to convert a number to binary?
>
> > def to_base(number, base):
> >         'converts base 10 integer to another base'
>
> >         number = int(number)
> >         base = int(base)
> >         if base < 2 or base > 36:
> >                 raise ValueError, "Base must be between 2 and 36"
> >         if not number:
> >                 return 0
>
> >         symbols = string.digits + string.lowercase[:26]
> >         answer = []
> >         while number:
> >                 number, remainder = divmod(number, base)
> >                 answer.append(symbols[remainder])
> >         return ''.join(reversed(answer))
>
> > Hope this helps,
> > Michael
>
> That's way too complicated...  Is there any way to convert it to a one-
> liner so that I can remember it?  Mine is quite ugly:
>     "".join(str((n/base**i) % base) for i in range(20) if n>=base**i)
> [::-1].zfill(1)-

Get the gmpy module (note inconsistencies involving octal and hex):

>>> import gmpy
>>> for base in xrange(2,37): print gmpy.digits(255,base)

11111111
100110
3333
2010
1103
513
0377
313
255
212
193
168
143
120
0xff
f0
e3
d8
cf
c3
bd
b2
af
a5
9l
9c
93
8n
8f
87
7v
7o
7h
7a
73

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to