首先,我不是Python专家,所以这是我的主题:
我想反转一个数字,让我们说number = "ABCD123"
(是的,这是一个字符串,但我需要这样做......),问题是我对Python的方式并不满意处理反转,例如~0xABCD123
是-180146468
,我不想要MSB,只需要反转“当前”位。我可以使用~0xABCD123 & 0XFFFFFFF
这样的东西,但数字的大小实际上可以改变......
问题
有没有办法使用运算符~
动态“强制转换”或删除Python中的位符号
答案 0 :(得分:4)
一个简单的黑客:
def invert_int(n):
number_bit_len = n.bit_length()
max_val = (2 ** number_bit_len) - 1
return ~n & max_val