在Python中有任何罐装的Python方法将整数(或长)转换为二进制字符串吗?

谷歌上有无数的dec2bin()函数…但我希望我可以使用内置函数/库。


当前回答

一个简单的方法是使用字符串格式,请参阅本页。

>> "{0:b}".format(10)
'1010'

如果你想要一个固定长度的二进制字符串,你可以使用这个:

>> "{0:{fill}8b}".format(10, fill='0')
'00001010'

如果需要使用two的补码,那么可以使用下面的行:

'{0:{fill}{width}b}'.format((x + 2**n) % 2**n, fill='0', width=n)

其中n是二进制字符串的宽度。

其他回答

除非我误解了你所说的二进制字符串,我认为你要找的模块是struct

下面是我刚刚实现的代码。这不是一个方法,但你可以把它作为一个现成的函数使用!

def inttobinary(number):
  if number == 0:
    return str(0)
  result =""
  while (number != 0):
      remainder = number%2
      number = number/2
      result += str(remainder)
  return result[::-1] # to invert the string

下面是使用divmod()函数的简单解决方案,该函数返回提示符和除法的结果,但不包含分数。

def dectobin(number):
    bin = ''
    while (number >= 1):
        number, rem = divmod(number, 2)
        bin = bin + str(rem)
    return bin

你可以这样做:

bin(10)[2:]

or :

f = str(bin(10))
c = []
c.append("".join(map(int, f[2:])))
print c

有点类似的解决方案

def to_bin(dec):
    flag = True
    bin_str = ''
    while flag:
        remainder = dec % 2
        quotient = dec / 2
        if quotient == 0:
            flag = False
        bin_str += str(remainder)
        dec = quotient
    bin_str = bin_str[::-1] # reverse the string
    return bin_str