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'