【问题标题】:How to convert decimal to binary list in python [duplicate]如何在python中将十进制转换为二进制列表[重复]
【发布时间】:2012-11-13 12:31:27
【问题描述】:

可能重复:
Convert an integer to binary without using the built-in bin function

如何将十进制数转换为二进制列表。

比如怎么把8变成[1,0,0,0]

【问题讨论】:

  • 我试过这个:binary = 0 while num != 0: bit = num % 2 binary = bit +(10* binary) num = num / 2 binary=[binary] return binary 但它没有'不要在数字之间给我逗号,它并不总是添加零。
  • 你试过什么?您可能想查看函数 bin 的 python 文档。
  • 如果可以的话,我想不使用该功能
  • This question 已被询问。
  • @johnthexiii -- 见this post on meta

标签: python list binary


【解决方案1】:

您可能可以使用内置的bin 函数:

bin(8) #'0b1000'

获取列表:

[int(x) for x in bin(8)[2:]]

虽然看起来可能有更好的方法......

【讨论】:

  • 依赖字符串表示细节并从整数到字符串再到列表似乎......次优。
【解决方案2】:

试试这个:

>>> list('{0:0b}'.format(8))
['1', '0', '0', '0']

编辑——哎呀,你想要整数:

>>> [int(x) for x in list('{0:0b}'.format(8))]
[1, 0, 0, 0]

另一个编辑 --

mgilson 的版本快一点:

$ python -m timeit "[int(x) for x in list('{0:0b}'.format(8))]"
100000 loops, best of 3: 5.37 usec per loop
$ python -m timeit "[int(x) for x in bin(8)[2:]]"
100000 loops, best of 3: 4.26 usec per loop

【讨论】:

    【解决方案3】:

    本着您最初尝试的精神:

    binary = []
    while num != 0:
        bit = num % 2
        binary.insert(0, bit)
        num = num / 2
    

    【讨论】:

    • 最好是 .append() 位然后 .reverse() 列表末尾而不是 inserting 列表开头。
    猜你喜欢
    • 2021-01-31
    • 2019-04-02
    • 2021-12-22
    • 2015-10-27
    • 1970-01-01
    • 2016-08-13
    • 2020-08-06
    • 2014-02-13
    • 2020-09-18
    相关资源
    最近更新 更多