在python中反转位

cas*_*las 3 python

给定32位无符号整数的反转位.

例如,给定输入43261596(以二进制表示 00000010100101000001111010011100),返回964176192(以二进制表示00111001011110000010100101000000).

这不起作用

def reverseBits(self, n):
    return int(bin(n)[:1:-1], 2)
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 9

你的问题是假设Python bin产生32位对齐输出.它没有; 它输出可能的最小位数.Python 3的int类型具有无限数量的位,即使在Python 2中,如果它溢出的边界(与C的限制无关)int也会自动提升.longintint

如果您希望它像特定宽度一样,最简单的方法是使用具有更多控件的格式化工具(这也将简化切片操作).

例如,通过格式化为固定的32个字符宽,用零填充,您将获得所需的结果:

>>> int('{:032b}'.format(43261596)[::-1], 2)
964176192
Run Code Online (Sandbox Code Playgroud)