Base conversion method or module
Francis Avila
francisgavila at yahoo.com
Sun Dec 7 21:45:41 CET 2003
Jeff Wagner wrote in message <0bu6tvsde8jqvjlu09itnuq6et04tmk9dc at 4ax.com>...
>Is there a Python module or method that can convert between numeric bases?
Specifically, I need to
>convert between Hex, Decimal and Binary such as 5Ah = 90d = 01011010b.
>
>I searched many places but couldn't find a Python specific one.
>
>Thanks, Jeff
There was a Python cookbook recipe that did these kinds of conversions,
IIRC. Look around at http://aspn.activestate.com/ASPN/Cookbook/Python.
Numeric might do this sort of thing, too, but I don't know.
Python itself can get you pretty far; the problem is that it's a bit spotty
in making conversions communicable.
For example, int() and long() both accept a string with a base argument, so
you can convert just about any base (2 <= base <= 36) to a Python int or
long.
Python can also go the other way around, taking a number and converting to a
string representation of the bases you want. The problem? There's only a
function to do this for hex and oct, not for bin or any of the other bases
int can handle.
Ideally, there's be a do-it-all function that is the inverse of int(): take
a number and spit out a string representation in any base (2-36) you want.
But the binary case is pretty simple:
def bin(number):
"""bin(number) -> string
Return the binary representation of an integer or long integer.
"""
if number == 0: return '0b0'
binrep = []
while number >0:
binrep.append(number&1)
number >>= 1
binrep.reverse()
return '0b'+''.join(map(str,binrep))
Dealing with negative ints is an exercise for the reader....
Remember also that Python has hex and octal literals.
--
Francis Avila
More information about the Python-list
mailing list