From hexadecimal to one's complement in Python

后端 未结 2 1515
甜味超标
甜味超标 2021-02-08 12:16

Is there an easy way to produce a one\'s complement in python?

For instance, if you take the hex value 0x9E, I need to convert it to 0x61.

相关标签:
2条回答
  • 2021-02-08 12:41

    Just use the XOR operator ^ against 0xFF:

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

    If you need to work with values larger than a byte, you could create the mask from the int.bit_length() method on your value:

    >>> value = 0x9E
    >>> mask = (1 << value.bit_length()) - 1
    >>> hex(value ^ mask)
    '0x61'
    >>> value = 0x9E9E
    >>> mask = (1 << value.bit_length()) - 1
    >>> hex(value ^ mask)
    '0x6161'
    
    0 讨论(0)
  • 2021-02-08 12:57

    Hah. just found out that python bin() return a string!

    so we can have some fun at this!

    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
    
    0 讨论(0)
提交回复
热议问题