From hexadecimal to one's complement in Python

后端 未结 2 1552
甜味超标
甜味超标 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'
    

提交回复
热议问题