Python反转了一个数字

时间:2013-06-24 12:04:00

标签: python numbers bit

首先,我不是Python专家,所以这是我的主题:

我想反转一个数字,让我们说number = "ABCD123"(是的,这是一个字符串,但我需要这样做......),问题是我对Python的方式并不满意处理反转,例如~0xABCD123-180146468,我不想要MSB,只需要反转“当前”位。我可以使用~0xABCD123 & 0XFFFFFFF这样的东西,但数字的大小实际上可以改变......

问题

有没有办法使用运算符~动态“强制转换”或删除Python中的位符号

1 个答案:

答案 0 :(得分:4)

一个简单的黑客:

def invert_int(n):
    number_bit_len = n.bit_length()
    max_val = (2 ** number_bit_len) - 1
    return ~n & max_val