
fperez528 at yahoo
May 2, 2003, 1:13 PM
Post #2 of 9
(1048 views)
Permalink
|
ekranawetter-piber wrote: > Hi all, > > I couldn't find any function in Python to convert integers to binary > and vice versa, for example: > > integer 16 = bin 10000, or > integer 15 = bin 1111 > bin 11 = integer 3 These are pulled from by bitbucket. I don't claim credit for them, as it's quite possible that they are reworks of code I found on the net: def base_repr (number, base = 2, padding = 0): """Return the representation of a number in any given base.""" chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' if number < base: \ return (padding - 1) * chars [0] + chars [int (number)] max_exponent = int (math.log (number)/math.log (base)) max_power = long (base) ** max_exponent lead_digit = int (number/max_power) return chars [lead_digit] + \ base_repr (number - max_power * lead_digit, base, \ max (padding - 1, max_exponent)) def binary_repr (number, max_length = 64): """Return the binary representation of the input number as a string. This is more efficient than using base_repr with base 2. This will only work reliably for relatively small numbers. Increase the value of max_length if you think you're going to use long integers.""" assert number < 2L << max_length shifts = map (operator.rshift, max_length * [number], \ range (max_length - 1, -1, -1)) digits = map (operator.mod, shifts, max_length * [2]) if not digits.count (1): return 0 digits = digits [digits.index (1):] return ''.join (map (repr, digits)).replace('L','') def bin(i): """Return the binary representation of the input number as a string. Efficient, but returns leading zeros.""" l = [.'0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111'] s = ''.join(map(lambda x: l[int(x, 16)], hex(i)[2:])) if s[0] == '1' and i > 0: s = '0000' + s return s > > please help and send an email to this adress and > ekranawetter [at] bmw Cheers, f.
|