将整数转换为二进制

时间:2012-12-01 20:13:10

标签: python

我有一个整数,我想转换为二进制,并从右边开始将一串位存储在一维数组中。例如,如果输入为6,则它应返回类似[1,1,0]的数组。怎么在python中做到?

7 个答案:

答案 0 :(得分:6)

解决方案

可能最简单的方法是不使用bin()和字符串切片,而是使用.format()的功能:

'{:b}'.format(some_int)

表现如何:

>>> print '{:b}'.format(6)
110
>>> print '{:b}'.format(123)
1111011

如果是bin(),您只需获得相同的字符串,但前面加上“0b”,因此您必须将其删除。

从二进制表示

获取int的列表

编辑:好的,所以不要只是一个字符串,而是一个整数列表。你可以这样做:

your_list = map(int, your_string)

已编辑问题的组合解决方案

所以整个过程看起来像这样:

your_list = map(int, '{:b}'.format(your_int))

在我看来比使用bin()更清洁。

答案 1 :(得分:4)

>>> map(int, bin(6)[2:])
[1, 1, 0]

如果你不想要一个整数列表(而是一个字符串),你可以省略map组件而不是:

>>> list(bin(6)[2:])
['1', '1', '0']

相关文档:

答案 2 :(得分:3)

您可以使用此命令:

map(int, list(bin(YOUR_NUMBER)[2:]))

它的作用是:

  • bin(YOUR_NUMBER)YOUR_NUMBER转换为二进制表示
  • bin(YOUR_NUMBER)[2:]获取有效数字,因为字符串以'0b110'格式返回,因此您必须删除0b
  • list(...)将字符串转换为列表
  • map(int, ...)将字符串列表转换为整数列表

答案 3 :(得分:1)

如果你有Python> = 2.6:

,你可以使用bin函数
list(bin(6))[2:]

修改 oops,忘记将商品转换为int

map(int, list(bin(6))[2:])

答案 4 :(得分:1)

在现代Python中,你可以(>python2.5):

>>> bin(23455)
'0b101101110011111'

丢弃第一个'0b':

>>> [ bit for bit in bin(23455)[2:] ]
['1', '0', '1', '1', '0', '1', '1', '1', '0', '0', '1', '1', '1', '1', '1']

一切都在一起:

def get_bits(number):
    return [ int(bit) for bit in bin(number)[2:] ]

在2.5中,您将获得NameError: name 'bin' is not defined

答案 5 :(得分:1)

其他人回答使用bin()。它有效,但我发现使用字符串操作来做数学有点......呃......蹩脚:

def tobits(x):
    r = []
    while x:
        r.append(x & 1)
        x >>= 1
    return r

tobits(0)将返回一个空列表。这可能是好的与否,取决于你将用它做什么。因此,如果需要,请将其视为一种特殊情况。

答案 6 :(得分:0)

您可以使用 numpy.unpackbits

这是带有示例的详细链接:https://numpy.org/doc/stable/reference/generated/numpy.unpackbits.html