将整数转换为32位二进制Python

时间:2017-03-26 02:37:14

标签: python

我正在尝试创建一个程序,将给定的整数(由32位int可以容纳的值限制)转换为32位二进制数。例如1应返回(000..31times)1。我一直在搜索文件和一切,但是还没有找到一些具体的方法。我得到它的工作位数根据数字大小但在字符串中。任何人都可以告诉一个更有效的方法来解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

'{:032b}'.format(n)其中n是一个整数。如果二进制表示大于32位,则将根据需要进行扩展:

>>> '{:032b}'.format(100)
'00000000000000000000000001100100'
>>> '{:032b}'.format(8589934591)
'111111111111111111111111111111111'
>>> '{:032b}'.format(8589934591 + 1)
'1000000000000000000000000000000000'    # N.B. this is 33 digits long

答案 1 :(得分:0)

如果需要,您可以向左或向右移动整数并将其转换为字符串以供显示。

>>> 1<<1
2
>>> "{:032b}".format(2)
'00000000000000000000000000000010'
>>>

或者如果您只需要二进制文件,可以考虑使用bin

>>> bin(4)
'0b100'

答案 2 :(得分:0)

比如说你想转换成 32 位二进制的数字是 4。所以,num=4。 这是执行此操作的代码:“s”最初是空字符串。

for i in range(31,-1,-1):
    cur=(num>>i) & 1 #(right shift operation on num and i and bitwise AND with 1)
    s+=str(cur)
print(s)#s contains 32 bit binary representation of 4(00000000000000000000000000000100)

00000000000000000000000000000100