有没有一种简单的方法可以在 python 中产生一个补码?
例如,如果您采用十六进制值0x9E
,我需要将其转换为0x61
.
我需要将二进制 1 换成 0,将 0 换成 1。感觉这应该很简单。
有没有一种简单的方法可以在 python 中产生一个补码?
例如,如果您采用十六进制值0x9E
,我需要将其转换为0x61
.
我需要将二进制 1 换成 0,将 0 换成 1。感觉这应该很简单。
只需对 0xFF使用XOR 运算符:^
>>> hex(0x9E ^ 0xFF)
'0x61'
如果您需要使用大于一个字节的值,您可以从您的值的int.bit_length()
方法创建掩码:
>>> value = 0x9E
>>> mask = (1 << value.bit_length()) - 1
>>> hex(value ^ mask)
'0x61'
>>> value = 0x9E9E
>>> mask = (1 << value.bit_length()) - 1
>>> hex(value ^ mask)
'0x6161'
哈。刚刚发现pythonbin()
返回一个字符串!
这样我们就可以玩得开心了!
for x in numbers: # numbers is a list of int
b = bin(x)
#print b # e.g. String 0b1011100101
b = b.replace('0', 'x')
b = b.replace('1', '0')
b = b.replace('x', '1')
b = b.replace('1b', '0b')
#print b # String 0b0100011010
print int(b, 2) # the decimal representation