tags:

views:

118

answers:

4
print 077777#how can i get binary

thanks

i use python2.5

+1  A: 

Here are some recipes from ActiveState Code you might find helpful: Format integer as binary string


My initial answer only works in Python 2.6 and up as Alex correctly pointed out.

Like this:

print '{0:b}'.format(077777)

cschol
No worky in 2.5.
Alex Martelli
+5  A: 

Make a map of hexadecimal characters to binary sequences, then run the number through (note: only works for non-negative numbers):

def bin(value):
    binmap = {'0': '0000', '1': '0001', ..., 'f': '1111'}
    return ''.join(binmap[x] for x in ('%x' % (value,))).lstrip('0') or '0'
Ignacio Vazquez-Abrams
I'd probably make this return `0b` prepended, for compatibility with the built-in `bin` function present in Python 2.6.
bobince
+1 for the pragmatic approach.
J.J.
+2  A: 

Simplest (not fastest!) way to get a binary string for an int in Python 2.5:

def dobin(n):
  digs = []
  s = ''
  if n<0:
    s = '-'
    n = -n
  while True:
    digs.append(str(n % 2))
    n /= 2
    if not n: break
  if s: digs.append(s)
  digs.reverse()
  return ''.join(digs)

Are you looking for speed, or for clarity?

Alex Martelli
hi alex,no worky ,and for speend what is it.
zjm1126
Fixed typos. Code works fine.
cschol
A: 
n = 1234

"".join([["0", "1"][(n >> i) & 1] for i in reversed(range(n.__sizeof__()))])

although not sure if sizeof its correct.you could also calculate the highest bit set and only print those.

"".join([["0", "1"][(n>>i)&1] for i in range(log(n,2)+1)])
aaa