Python 负整数到有符号32位二进制

Python 负整数到有符号32位二进制,python,python-2.7,binary,Python,Python 2.7,Binary,我的意图是将a作为32位有符号二进制文件处理并返回它。-2147458560的正确转换应为'0B1000000000000000010110000000000';如何实现这一点?首先使用0xffffff(232-1)按位和(&): 然后我必须将它转换回以返回它。@Nikos,转换成int?简单地a&0xFFFFFFbin(-2&0xffffffff)按预期返回'0b11111111111110'。但是,bin(2&0xffffffff)返回'0b10'。我是否必须编写自定义代码使其返回'0b00

我的意图是将
a
作为32位有符号二进制文件处理并返回它。
-2147458560
的正确转换应为
'0B1000000000000000010110000000000'
;如何实现这一点?

首先使用
0xffffff
(232-1)按位和(
&
):


然后我必须将它转换回以返回它。@Nikos,转换成
int
?简单地
a&0xFFFFFF
bin(-2&0xffffffff)
按预期返回
'0b11111111111110'
。但是,
bin(2&0xffffffff)
返回
'0b10'
。我是否必须编写自定义代码使其返回
'0b0000000000000000000000010'
?@frederick99,您可以使用
str.format
'{:032b}'。format(2&0xffffffffff)
'0b{:032b}。format(2&0xffffffffff)
如何从
'0b1000000110001000000000'
返回到
-2147458560
>>> a = -2147458560
>>> bin(a)
'-0b1111111111111111001111000000000'
>>> a = -2147458560
>>> bin(a & 0xffffffff)
'0b10000000000000000110001000000000'

>>> format(a & 0xffffffff, '32b')
'10000000000000000110001000000000'
>>> '{:32b}'.format(a & 0xffffffff)
'10000000000000000110001000000000'