在python中将整数转换为二进制

时间:2012-05-02 09:31:42

标签: python binary integer

为了将整数转换为二进制,我使用了以下代码:

>>> bin(6)  
'0b110'

以及何时删除' 0b',我使用:

>>> bin(6)[2:]  
'110'

如果我想将6显示为00000110而非110,我该怎么办?

15 个答案:

答案 0 :(得分:299)

>>> '{0:08b}'.format(6)
'00000110'

只是解释格式化字符串的部分:

  • {}将变量放入字符串
  • 0将变量置于参数位置0
  • :为此变量添加格式选项(否则它将代表十进制6
  • 08将数字格式化为左侧零填充的八位数字
  • b将数字转换为二进制表示

如果你使用的是Python 3.6或更高版本,你也可以使用f-strings:

>>> f'{6:08b}'
'00000110'

答案 1 :(得分:89)

另一个想法:

>>> bin(6)[2:].zfill(8)
'00000110'

通过string interpolation缩短的方式( Python 3.6 + ):

>>> f'{6:08b}'
'00000110'

答案 2 :(得分:19)

有点笨拙的方法......

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'

答案 3 :(得分:13)

只需使用格式化功能

format(6, "08b")

一般表格是

format(<the_integer>, "<0><width_of_string><format_specifier>")

答案 4 :(得分:10)

eumiro的回答更好,但我只是发布了这个多样性:

>>> "%08d" % int(bin(6)[2:])
00000110

答案 5 :(得分:6)

..或者如果您不确定它应该总是8位数,您可以将其作为参数传递:

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'

答案 6 :(得分:2)

去旧学校总是有效

def intoBinary(number):
binarynumber=""
if (number!=0):
    while (number>=1):
        if (number %2==0):
            binarynumber=binarynumber+"0"
            number=number/2
        else:
            binarynumber=binarynumber+"1"
            number=(number-1)/2

else:
    binarynumber="0"

return "".join(reversed(binarynumber))

答案 7 :(得分:1)

numpy.binary_repr(num, width=None)具有不可思议的宽度参数

上面链接的文档中的相关示例:

>>> np.binary_repr(3, width=4)
'0011'
     

当输入数字为负并且指定了宽度时,将返回两个补码:

>>> np.binary_repr(-3, width=5)
'11101'

答案 8 :(得分:1)

假设您要解析用于表示不总是恒定的变量的位数,那么一种好方法是使用numpy.binary。

在将二进制文件应用于电源集时可能很有用

import numpy as np
np.binary_repr(6, width=8)

答案 9 :(得分:1)

更简单的方法

my_num = 6
print(f'{my_num:b}')

答案 10 :(得分:0)

('0' * 7 + bin(6)[2:])[-8:]

right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side

答案 11 :(得分:0)

最好的方法是指定格式。

format(a, 'b')

以字符串格式返回二进制值。

要将二进制字符串转换回整数,请使用 int()函数。

int('110', 2)

返回二进制字符串的整数值。

答案 12 :(得分:0)

def int_to_bin(num, fill):
    bin_result = ''

    def int_to_binary(number):
        nonlocal bin_result
        if number > 1:
            int_to_binary(number // 2)
        bin_result = bin_result + str(number % 2)

    int_to_binary(num)
    return bin_result.zfill(fill)

答案 13 :(得分:0)

您只能使用:

"{0:b}".format(n)

我认为这是最简单的方法!

答案 14 :(得分:0)

python 包 Binary Fractions 具有二进制和二进制分数的完整实现。您可以进行如下操作:

from binary_fractions import Binary
b = Binary(6) # creates a binary fraction string
b.lfill(8) # fills to length 8

这个包有许多其他的方法来以全精度操作二进制字符串。