从十六进制到Python中的补码

2024-05-31 13:37:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,有没有一种简单的方法可以生成一个补码?

例如,如果采用十六进制值0x9E,则需要将其转换为0x61

我需要把二进制的1换成0,把0换成1。感觉应该很简单。


Tags: 方法二进制感觉补码
2条回答

哈。刚刚发现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

只需对0xFF使用the XOR operator ^{}

>>> hex(0x9E ^ 0xFF)
'0x61'

如果需要使用大于一个字节的值,可以从值的^{} method创建掩码:

>>> value = 0x9E
>>> mask = (1 << value.bit_length()) - 1
>>> hex(value ^ mask)
'0x61'
>>> value = 0x9E9E
>>> mask = (1 << value.bit_length()) - 1
>>> hex(value ^ mask)
'0x6161'

相关问题 更多 >